正则表达式

正则表达式


/\d\d\d/.test("123");//false
/\d\d\d//test("abc");//false

new Reg(“Bosn”).tes(“Hi,Bosn”);

类型 作用 demo
. 任意字符(除了换行符以外: \n,\r,\u2028) /…/.test(“1a@”)
\d 数字0-9 /\d\d\d/.test(“123”)
\D 非\d,即不是数字0-9的字符 /\D\D\D/.test(‘ab!’);
\w 数字0-9,或字母a-z及A-Z(大小写),或者下划线 /\w\w\w/.test(“aB9_”)
非\w /\sabc/.test(“abc”)
\s 空格符, TAB,换页,换行符
\S 非\s
\t\r\n\v\f tab回车,换行,垂直制表符 换页符
[…] 字符范围 [a-z],,,,, [0-9] ,,,,[a-z0-9A-Z_]
[^…] 字符范围以外 ^[a-z] , ,,[ ^ abc]
^ 行首 ^Hi
$ 行尾 test$
\b 零宽单词边界 \bno(会匹配a no)
\B 非\b
/\^abc/.test(‘^abc’)
(x) 分组,并记录匹配到字符串 /(abc)/
\n 表示使用分组符(x)匹配到的字符串 /(abc)\1/.test(“abcabc”)
(?:x) 仅分组 /(?:abc)(def)\1/.test(“abcdefdef”)
x* 重复次数>=0,贪婪算法 正则表达式:abc*将匹配ab,abc,abcccccc.
x+ 重复次数>0,贪婪算法 正则表达式abc+,将匹配abc,abccccc,不匹配ab
x*?, x+? 同x*,x+ ,非贪婪算法
x? 出现0次或1次
x/y x或者y x/y匹配x,也匹配y.再比如ab/cd/ef将匹配ab或cd或ef
x{n},x{n,},x{n,m} 重复n次,重复>=n次,重复次数x满足,n<=x<=m 闭区间 x{5}匹配xxxxxxo,不匹配xxxxo.x{1,3}匹配x,xx,xxx

三个Flag

golab,ignoreCase, multiline

/abc/gim.test(“ABC”);//true

RegExp(“abc”,”mgi”);//mgi 的顺序无所谓

RegExp的对象方法

  • complie
  • exec
  • test
  • toString

demo

/abc/.exec("abcdef");
/abc/.test("abcdef");
/abc/.toString();// "/abc/"

string类型与正则相关的方法

  • String.prototype.seacrch
  • String.prototype.replace
  • String.prototype.match
  • String.prototype.split

demo

"abcabcdef".search(/(abc)\1/);//返回索引开始的位置0
"aabbcc".replace(/b+?/,"1");aa1bbbc
"aabbbbcc".match(/b+/);["bbbb"]
"aabbbbccbbbaa".match(/b+/g);["bbbb","bb"]
"aabbbbccbbaa".split(/b+/);["aa","bb","cc"]

demo2.邮件格式的正则匹配

//常见的邮箱格式的匹配:
/^(\w+[_|\.|\_]?)*(\w)+@(\w+[_|\.|\_])*(\w)+\.[a-zA-z]{2,4}$/.test("wanglinzhizhi@hotmail.com")