JS经典正则表达式笔试题汇总(2)

var str="abca"; var re=https://www.jb51.net/(a)(b)(c)\1/ ; //true,为什么不用var re=https://www.jb51.net/(a)(b)(c)\a/ ;一样能匹配成功,\数字,用于不确定的子项字符 var re=https://www.jb51.net/(a)(b)(c)\2/ ; //false alert(re.teat(str));

例子:找某个字符串中出现最多的字符和它一共出现多少次

var str="vbbbbhybbfhbbgbbb"; var arr=str.split(""); str=arr.sort().join(""); var value=""; //存放出现最多的字符 var index=0; //存放次数 var re=https://www.jb51.net/(\w)\1+/g;

没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来像这样bbb...,hh

str.replace(re,function($0,$1){ //$0代表整体,$1代表第一个子项 if(index<$0.length){ //$0:每一组重复的元素 index=$0.length; value=$1; } }) alert('出现最多的字符是'+value+',出现次数是'+index);

\b(\B):独立的部分(非独立的部分)  独立的部分(起始、结束、空格)

如:

var str="onetwo"; var re=https://www.jb51.net/\bone/; //起始位置,true var re=https://www.jb51.net/one\b/; //false,要true,one和two之间加空格或者只有one alert(re.test(str));

独立部分应用举例

之前有用到用封装好的函数来获取className

function getByClass(oparent,sClass){ var aEle=oparent.getElementsByTagName("*"); var aResult=[]; var i; for(i=0;i<aEle.length;i++){ if(aEle[i].className==sClass){ aResult.push(aEle[i]); } } return aResult; };

这个会有bug

<div></div> <div></div> <div></div>

用这个方法获取box1,只能获取到第一个

用正则来改写

function getByClass(oparent,sClass){ var aEle=oparent.getElementsByTagName("*"); var aResult=[]; var i; var re=new RegExp('\\b'+sClass+'\\b') for(i=0;i<aEle.length;i++){ if(re.test(aEle[i].className)){ aResult.push(aEle[i]); } } return aResult; };

六.量词

不确定的字符个数

量词:{}

{4,7}   最少出现4次,最多出现7次

{4,}     最少出现4次

{4}      正好出现4次

+是{}的简写,相当于(1,)

? 相当于{0,1}    //出现0次或者1次

* 相当于{0,}     //至少出现0次,可以没有

七.正则收尾

^:正则的最开始位置,表示起始的意思

$:正则的最后,表示结束的意思

例子:去掉字符串里的空格

var re=https://www.jb51.net/^\s+|\s+$/g; str.replace(re,"");

例子:检测邮箱

var re=https://www.jb51.net/^\w+@[a-z0-9]+(\.[a-z]+){1,3}$/;

八.前向声明和反前向声明

(?=) :前向声明

(?!):反前向声明

举例

var str="abacad"; var re=https://www.jb51.net/a(?=b)/g; str=str.replace(re,"*"); alert(str);

输出:*bacad

如果改为

var re=https://www.jb51.net/a(?!b)/g;

输出:ab*c*d

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:

正则表达式在线生成工具:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfgww.html