正则表达式 Regular Expression
.
匹配除断行外任意一个字符
\w
匹配阿拉伯数字,英文大小写字母和下划线
\W
匹配\w的补集
\d
匹配整数
\D
匹配所有不是数字的字符,包括空格
\s
匹配空白字符,换行,制表符等
\S
\s的补集
[选择范围]
匹配方括号中的任意一个字符,注意!只代表一个字符例如[abc]只代表a或b或c
[a-z],[a-d]
匹配a到z,a到d,适用于数字及大写字母
[\u4e00-\u9fa5]
匹配任意中文字符,\u代表万国码(Unicode),用数字代表文字的一项标准
+
匹配一次或多次,例如 /[abc]+/g
匹配aaa,ccc,b等等
*
匹配零次或多次
?
匹配零次或一次
{a,b}
匹配a次到b次,指定范围,或{a}
匹配a次
分组匹配()
被正则表达式匹配(捕获)到的字符串会被暂存起来。其中,由分组捕获的串会从1开始编号
var reg = /(\d{4})-(\d{2})-(\d{2})/
var date = '2010-04-12'
reg.test(date)
RegExp.$1 // 2010
RegExp.$2 // 04
RegExp.$3 // 12
分组匹配但不捕获(?:)
如果(??*),为只匹配但不捕获例如(?:reg|reb|rec),只匹配reg或者reb或者rec但不捕获,即不占用$变量
正向预查(?=)
/\d+(?=b)/g
匹配元素后一定接b(变量)但不匹配b
正向否定预查(?!b)
注意需要指出不匹配b变量,且不匹配之前的匹配元素
/\d+(?!b|\d)/g
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
^ | 行首或字符串开始 | ^yo | yo | ayo |
$ | 行末或字符串结束 | yo$ | yo | yop |
\b | 单词边界 | \byo\b | mu yo mu | muyomu |
\B | 非单词边界 | \Byo\B | muyomu | mu yo mu |
符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
[ ] | 字符集合 | [ace] | a, c, e | d |
[ - ] | 字符范围 | [a-c] | a, b, c | d |
[^ ] | 不包含的字符集合 | [^abc] | d, e | a, b, c |
. | 匹配除断行外的任何字符 | yo. | yoo, yop, yoh | yo |
\s | 空白字符,等于[\n\r\f\t ] | la\sla | la la | lala |
\S | 非空白字符,等于[^\n\r\f\t] | la\sla | lala | la la |
\d | 数字 | \d{2} | 23 | 1a |
\D | 非数字 | \D{3} | yoo, abc | yo1 |
\w | 单词,等于[a-z-A-Z0-9_] | \w{4} | v123 | v12.3 |
\W | 非单词,等于[^a-z-A-Z0-9_] | .$%? | .$%? | .ab? |
符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
(?=xxx) | 正向肯定预查,从任何匹配xxx的字符串开始处匹配查找字符串 | yo(?=o) | yoo | yo |
(?!xxx) | 正向否定预查,从任何不匹配pattern的字符串开始处匹配查找字符串 | yo(?!o) | yo | yoo |
(?<=xxx) | 反向肯定预查,与正向肯定预查类拟,只是方向相反 | (?<=y)o | yo | yoo |
(?<!xxx) | 反向否定预查,与正向否定预查类拟,只是方向相反 | (?<!goo)d | mood | good |
特殊字符 | 描述 |
---|---|
\n | 断行 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
\f | 换页 |
[\b] | 退格 |
符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
---|---|---|---|---|
| | 或,其一 | a|b | a, b | c |
(xxx) | 匹配xxx并获取这一匹配 | yo(o|p) | yoo 或 yop | yoh |
(?:xxx) | 匹配xxx但不获取这一匹配 | y(??) | yo | ya |
+ | 重复1次或多次 | yo+ | yo, yooo | y |
* | 重复0次或多次 | yo* | y, yoo | yop |
? | 出现0次或1次 | yo? | y, yo | ye |
?? | ?的懒惰模式,尽可能少匹配 | yoo?? | yo | yoo |
+? | +的懒惰模式 | yo+? | yo | yoo |
*? | *的懒惰模式 | yo*? | y | yo |
{n} | 重复n次 | yo{2} | yoo | yooo |
{n,m} | 重复n到m次 | yo{1, 3} | yo,yooo | yoooo |
{n,} | 重复至少n次 | yo{2,} | yoo, yooo | yo |
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
(red|blue|green) | 查找任何指定的选项。 |
javascript正则表达式方法
-
search() 方法
用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置
-
replace() 方法
用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
-
test()
用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
-
exec()
exec() 方法用于检索字符串中的正则表达式的匹配。
该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
RegExp 对象方法
方法 | 描述 |
---|---|
exec | 索字符串中指定的值。返回找到的值,并确定其位置。 |
test | 检索字符串中指定的值。返回 true 或 false。 |
toString | 返回正则表达式的字符串。 |
支持正则表达式的 String 对象的方法
方法 | 描述 | FF | IE |
---|---|---|---|
search | 检索与正则表达式相匹配的值。 | 1 | 4 |
match | 到一个或多个正则表达式的匹配。 | 1 | 4 |
replace | 与正则表达式匹配的子串。 | 1 | 4 |
split | 把字符串分割为字符串数组。 | 1 |