正则需要传参时,必须使用new RegExp();
var re = new RegExp('\\b'+sClass+'\\b');
-------------------------------------------------------------
量词,转义字符:
\s : 空格
\S : 非空格
\d : 数字
\D : 非数字
\w : 字符(字母,数字,下划线)
\W : 非字符
\. :真正的点
\b:独立的部分 (起始,结束,空格)
\B:非独立的部分
^ :放在正则前边,代表起始
$ :代表结束
/^[1-9]\d{4,11}$/ //QQ号检测
+ :至少出现一次;
| :或
^ :非 [在中括号里边是非的意思]
. :任意字符
{}:
{1,5}:最少1次,最多5次
{2,}:最少2次,最多不限
{1}:正好1次
+:{1,} 即至少出现1次
?:{0,5} 即出现0次或5次
*:{0,} 即至少出现0次
-------------------------------------------------------------
标识:不区分大小写 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