Regex

正则表达式 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(?:o) 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]](http://www.runoob.com/jsref/jsref-regexp-charset-not.html) 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。

javascript正则表达式方法

  1. search() 方法

     用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置

  2. replace() 方法 

    用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

  3. test()

    用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

  4. exec()

    exec() 方法用于检索字符串中的正则表达式的匹配。

    该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

RegExp 对象方法

方法 描述
exec 索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。
toString 返回正则表达式的字符串。

支持正则表达式的 String 对象的方法

方法 描述 FF IE
search 检索与正则表达式相匹配的值。 1 4
match 到一个或多个正则表达式的匹配。 1 4
replace 与正则表达式匹配的子串。 1 4
split 把字符串分割为字符串数组。 1