基础
1、定位
^ 字符串的开始
$ 字符串的结尾
\b 匹配一个字边界,即字与空格间的位置。
\B 非字边界
2、数字字母
\d \w
[0-9] [a-z] [A-z]
{n} 非负整数
3、非打印字符
\n 换行
\r 回车
\s 空白字符
\S 非空白字符
4、特殊字符
+ 一次或多次
* 零次或多次
. 除换行符 \n 之外的任何单字符
() 提取匹配的字符串 (0-9)匹配字符串"0-9"本身
(abc)? 表示这一组要么一起出现,要么不出现
[] 限定字符集 [0-9]*匹配数字
{n,m} 长度 [0-9]{0,9}表示长度为0到9的数字字符串
[^] 排除
| || 或
5、修饰符
i 大小写不敏感
g 全局匹配
6、
+ 和 * 贪婪匹配,匹配尽可能长的字符串
+? 和 *? 懒惰匹配,匹配符合条件的尽量短的字符串
(?!pattern) 过滤掉不包含的
(?:pattern) 优化性能,不反悔子匹配结果,比如:
(aaa)(bbb)(ccc)(?:ddd)(eee)可以用1获取(aaa)匹配到的内容,而3则获取到了(ccc)匹配到的内容,而$4则获取的是由(eee)
var str3 = "haabaab";
str3.match(/h.*b/); //haabaab
str3.match(/h.*?b/); //haab
str3.match(/ha+/); //haa
str3.match(/ha+?/); //ha
var str = "hello123back, hello456back";
str.match(/hello(?!456).*?back/); //hello123back
str.match(/(hello).*/); //["hello123back, hello456back", "hello"]
str.match(/(?:hello).*/); //["hello123back, hello456back"]
7、前置后置
aaa(?=bbb) aaa后面必须是bbb
exp1(?!exp2) aaa后面不是bbb
(/a(?=b)/).test("xxxxabxxxx") //true
(/a(?!b)/).test("xxxxabxxxx") //false
例子
匹配IP的每一段
^([0-9]||[1-9][0-9]||1[0-9][0-9]||2[0-4][0-9]||25[0-5])$
邮件地址
^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$/
用法
1.
var reg = new RegExp("^[0-9]+$");
reg.test(text);
2.
( /^[0-9]+$/).test(text);
3. replace
text.replace(/aaa/g, "bbb");
4.match
text.match(exp);