正则好久不用了,几乎已经忘记了。复习下。
普通字符串
1、[ABC] 匹配 [...] 中的所有字符
var str = "123abcgoolebeijing"; var patt1 = /[aeiou]/g; document.write(str.match(patt1)); //输出:a,o,o,e,e,i,i
2、[^ABC] 匹配除[…]中所有字符
var str = "123abcgoolebeijing"; var patt1 = /[^aeiou]/g; document.write(str.match(patt1)); //输出:1,2,3,b,c,g,l,b,j,n,g
3、[A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母
4、. 匹配除换行符( 、 )之外的任何单个字符
5、[sS] 匹配所有。s 是匹配所有空白符,包括换行,S 非空白符,不包括换行。
6、w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
特殊字符
所谓特殊字符,就是一些有特殊含义的字符,若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符 放在它们前面。下表列出了正则表达式中的特殊字符:
特别字符 | 描述 |
---|---|
$ | 匹配输入字符串的结尾位置。 |
( ) | 标记一个子表达式的开始和结束位置。 |
* | 匹配前面的子表达式零次或多次。 |
+ | 匹配前面的子表达式一次或多次。 |
. | 匹配除换行符 之外的任何单字符。 |
[ | 标记一个中括号表达式的开始。 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 |
将下一个字符转义。 | |
^ | 匹配输入字符串的开始位置。在方括号表达式中使用,表示不接受该方括号表达式中的字符集合。 |
{ | 标记限定符表达式的开始。 |
| | 指明两项之间的一个选择。 |
选择
用圆括号 () 将所有选择项括起来,相邻的选择项之间用 | 分隔。
() 表示捕获分组,() 会把每个分组里的匹配的值保存起来, 多个匹配值可以通过数字 n 来查看(n 是一个数字,表示第 n 个捕获组的内容)。
//匹配一个数字开头多个字母结尾的组合 var str = "123abcGooleB7eijing"; var patt1 = /([1-9])([a-z]+)/g; document.write(str.match(patt1)); //3abc,7eijing
修饰符(标记)
修饰符 | 含义 | 描述 |
---|---|---|
i | ignore - 不区分大小写 | 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。 |
g | global - 全局匹配 | 查找所有的匹配项。 |
m | multi line - 多行匹配 | 使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。 |
s | 特殊字符圆点 . 中包含换行符 | 默认情况下的圆点 . 是 匹配除换行符 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 。 |
var str="Runoobgoogle taobao runoobweibo"; var n1=str.match(/^runoob/g); // 匹配不到 var n2=str.match(/^runoob/gi); // 不区分大小写 匹配到一个 var n3=str.match(/^runoob/gmi); // 多行匹配不区分大小写 匹配到两个
var str="google runoob taobao"; var n1=str.match(/google./); // 没有使用 s,无法匹配 var n2=str.match(/runoob./s); // 使用 s,匹配
部分元字符
匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
|
B |
匹配非单词边界。'erB' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
cx |
匹配由 x 指明的控制字符。例如, cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 |
d |
匹配一个数字字符。等价于 [0-9]。 |
D |
匹配一个非数字字符。等价于 [^0-9]。 |
f |
匹配一个换页符。等价于 x0c 和 cL。 |
匹配一个换行符。等价于 x0a 和 cJ。 |
|
匹配一个回车符。等价于 x0d 和 cM。 |
|
s |
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ f v]。 |
S |
匹配任何非空白字符。等价于 [^ f v]。 |
匹配一个制表符。等价于 x09 和 cI。 |
|
v |
匹配一个垂直制表符。等价于 x0b 和 cK。 |
w |
匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。 |
W |
匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。 |
完整文档:https://www.runoob.com/regexp/regexp-syntax.html