JS正则表达式总结

正则需要传参时,必须使用new RegExp();

var re = new RegExp('\\b'+sClass+'\\b');

-------------------------------------------------------------
量词,转义字符:

\s : 空格
\S : 非空格

\d : 数字
\D : 非数字

\w : 字符(字母,数字,下划线)
\W : 非字符

\. :真正的点

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

^ :放在正则前边,代表起始
$ :代表结束


/^[1-9]\d{4,11}$/ //QQ号检测


+ :至少出现一次;
| :或
^ :非 [在中括号里边是非的意思]
. :任意字符


{}:
{4,7}:最少4次,最多7次
{4,}:最少4次,最多不限
{4}:正好4次

+:{1,} 即至少出现1次
?:{0,1} 即出现0次或1次
*:{0,} 即至少出现0次

重复子项:

var str = 'abca';
var re = /(a)(b)(c)\1/; //true
// var re = /(a)(b)(c)\2/; //false

-------------------------------------------------------------
标识:不区分大小写 i 全局匹配 g

正则默认区分大小写,
如果不区分大小写,在正则最后加标识 i ;
正则匹配成功就会结束,不会继续匹配,
如果要全部查找,在正则最后加标识 g ;(全局匹配)

-------------------------------------------------------------
四种常用方法test search match replace

1,正则.test(字符串) [匹配成功:返回true,失败:返回false]
2,字符串.search(正则) [匹配成功:返回位置,失败:返回-1]
3,字符串.match(正则) [匹配成功:返回匹配成功的数组,失败:返回null]
4,字符串.replace(正则,第二个参数)
replace第二个参数可以是[字符串],
也可以是[回调函数],函数的第一个参数就是匹配成功的字符,
字符串.replace(正则,function($0,$1,$2){})

-------------------------------------------------------------

匹配子项 : 小括号()
[分组操作]

字符串.replace(正则,function($0,$1,$2){})
$0:母亲;(整体)
$1:第一个孩子;(第一个小括号)
$2:第二个孩子;(第二个小括号)

var str = 'abc';
var re= /(a)(b)(c)/;
str.match(re); 返回[abc,a,b,c]
match只有不加g(全局匹配)才能获得子项

-------------------------------------------------------------
// 字符类:一组相似的元素
// []中括号的整体代表一个字符

var str='abc';

var re=/a[bde]c/;

alert(re.test(str)); 返回true

var str='abdc';

var re=/a[bde]c/;

alert(re.test(str)); 返回false

var str='abc';

var re=/a[a-z0-9A-Z]c/;

alert(re.test(str));

-------------------------------------------------------------

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

var str='onetwo';

// var re= /\bone/; //true

var re= /one\b/; //false

alert(re.test(str));

-------------------------------------------------------------
重复子项


// \1 :重复的第一个子项
// \2 :重复的第二个子项

var str = 'abca';
var re = /(a)(b)(c)\1/; //true
// var re = /(a)(b)(c)\2/; //false

alert(re.test(str));


// var re = /\w\w/; //c9
// var re = /(\w)\1/; //cc 99

-------------------------------------------------------------
找出出现次数最多的字符和次数

var str='ahlihkhkjsssssssssssssdasdasdasdasdsdafafqrghjff';

var arr = str.split(''); //分割成数组

str=arr.sort().join('');//数组连成字符串

var re=/(\w)\1+/g;
var index=0;
var value='';

str.replace(re,function ($0,$1) {
if (index<$0.length) {
index=$0.length;
value=$1;
}
})

-------------------------------------------------------------

匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
网址:[a-zA-z]+://[^\s]*
QQ号:^[1-9][0-9]{4,9}$
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x

原文地址:https://www.cnblogs.com/king2016/p/5738783.html