在 JavaScript中,正则表达式也是对象。
如何创建一个正则表达式?
方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示:
|
|
方法二:调用RegExp对象的构造函数
|
|
如何使用?
方法一:简单模式,由简单的字符所构成的。如 /abc/
例子:
|
|
只要 value 含有 “13566668888” 这串数字,isEqual 就为 true。
Demo地址
方法二: 使用特殊字符,如 /^abc$/
例子:
|
|
只要 value 开头前9个字符前必须是 “13566668888”,isEqual 才为 true,
Demo地址
平时开发中,常用的是特殊字符。
特殊字符:$
|
|
只要当 value 后面9个字符是 “13566668888” ,isEqual 就为 true;
Demo地址
需求1
如何匹配一个9个数字的手机号码?
方法一:
|
|
其中方括号”[]” 表示查找方括号之间的任何字符,方括号里面 0-9 表示在 0到9的数字都可以匹配到,对于 [a-z] 同样,可以匹配到字符 a 到字符 z之间的任意字符。
但显然这个方式很繁琐。
元字符:\d
|
|
元字符:”\d” 表示数字,但还是很繁琐。。
量词
|
|
\d{10} 表示匹配包含10个数字的字符串,n{X} 匹配包含 X 个 n 的序列的字符串
需求2
如何匹配邮箱?
方法:1let isEqual = /.+@163\.com$/.test(value);
知识点: 元字符 + 量词 + 转移符
“.” 表示查找单个字符
“+” 表示匹配任何包含至少一个 n 的字符串。
“\ .” 反斜杠表示将其后的特殊字符转义为字面量。
因此上述正则表达式的意思是,先匹配 n个字符串,然后再匹配 @163,等将小数点”.” 转义后,再匹配 “.com” 结尾,这样就能完成匹配一个邮箱的需求。
Demo地址
需求3
那如何匹配不同的邮箱呢?
方法:
|
|
知识点:
(.+), 匹配 ‘.+’ 并且记住匹配项,括号被称为捕获括号。
(163|126|188),“|” 表示匹配‘163’或者‘188’。