参考:http://deerchao.net/tutorials/regex/regex.htm
正则表达式有三个标志:
g 表示全局模式,匹配所有适合项,而不是发现第一个匹配项立即停止
i 不区分大小写
m 表示多行模式 ,即到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项
正则表达式的元字符包括: () [] {} \ ^ $ ? * + .
^ 起始位置 $ 结尾位置,使用了起始结束位置符号后,匹配一行的内容
\b 单词边界
[abc] a或b或c
[0-9a-zA-Z] 数字或者小写字母或者大写字母
[^0-9] 非 数字的一个字符,这里^代表了否定
. 点号代表任意字符
\s 空格 \S 非空格 \d 数字\D 非数字 \w 字符(字母,数字,下划线)\W 非字符
量词:
{m,n}代表至少出现m次,最多出现n次
*等价于{0,} ,也就是出现0次以上,尽可能多的匹配
?等价于{0,1},也就是出现0次或1次,尽可能多的匹配
+等价于{1,},也就是1次以上,尽可能多的匹配
需要匹配的是元字符时,需要用转义符号\
/a?b/.test('abcde') //返回true,a出现0次,然后匹配到b
/ab?e/.test('abcde') //返回false,匹配到ab,但是接着不是e
或 |
()捕获 (?:)不捕获
几种应用正则表达式的方法
test方法
var str = 'abc123';
var rule = /\D/;
// test返回布尔值,表示是否匹配到内容
rule.test(str);
search方法
var str = 'abcdef';
var rule = /cd/;
// search匹配成功,返回位置,失败,返回-1
str.search(rule);
match方法
var str = 'abcdabcdabcd';
// 有g则匹配所有符合的内容,没有g只匹配第一个符合的内容
var rule = /ab/g;
// match返回一个包含匹配内容的数组
str.match(rule);
replace方法
var str = 'aaa';
var rule = /a/g;
// 将全部的字符a换成b
str.replace(rule,'b');
还有exec方法,是更强大的检索,有更详尽的结果和过程状态