本文共 2951 字,大约阅读时间需要 9 分钟。
两种定义正则表达式对象(RegExp)的方法:
1) var pattern = /s$/; 2) var pattern = new RegExp("s$");系统学习正则表达式的两本参考:
1)Programming Perl by Larry Wall et al. (O'Reilly). 2)Mastering Regular Expressions by Jeffrey E.F. Friedl (O'Reilly)转义字符(backslash):\
字母和数字不需要转义。其他字符如果记不住就用吧。 这些字符有特殊含义,需要转义:^ $ . * + ? = ! : | \ / ( ) [ ] { } 其它特殊字符表示方法: \0 NULL(unicode十六进制表示法为\u0000,下同) \t Tab (\u0009) \n NewLine (\u000A) \v Vertical tab (\u000B) \f Form feed (\u000C) \r Carriage return (\u000D) \xnn The Latin character specified by the hexadecimal number nn; for example, \x0A is the same as \n \uxxxx The Unicode character specified by the hexadecimal number xxxx; for example, \u0009 is the same as \t \cX The control character ^X; for example, \cJ is equivalent to the newline character \n一类字符的表示方法:
[...] 括号内的任意一个字符 [^...] 除括号内字符之外的任意一个字符 . 除换行符(or another Unicode line terminator)外的任意一个字符 \w 字母、数字或下划线,等价于[a-zA-Z0-9_] \W 除字母、数字或下划线外的任意一个字符,等价于[^a-zA-Z0-9_]. \s Unicode whitespace \S 除Unicode whitespace之外的其他字符。须注意\w和\S是不一样的。 \d 数字,等价于[0-9] \D 非数字,等价于[^0-9]. [\b] backspace (方括号之间的\b指的是键盘上Backspace键对应的字符). \b \w和\W之间的位置(锚点),请注意第二个W是大写字母。重复匹配模式:
{n,m} 匹配至少n次,但是不超过m次 {n,} 匹配n次或n次以上 {n} 匹配恰好n次 ? 匹配0次或1次,等价于{0,1} + 匹配1次或1次以上,等价于{1,} * 匹配0次或0次以上,等价于{0,} 举例: /\d{2,4}/ 2-4个数字 /\w{3}\d?/ 1-3位是个字母、数字或下划线,第四位是一个可选的数字 /\s+java\s+/ 匹配"java"单词,前后都要有空格,1个或多个空格都行 /[^"]*/ 不含双引号的字符串提醒:使用*和?时要小心。例如/a*/不要求a必须出现,所以"bbb"也会被匹配的。
贪心匹配和不贪心匹配: 之前提到的重复匹配模式会匹配尽可能多的字符,用贪心一词形容很贴切。在重复模式后面跟个问号,则匹配尽可能少的字符。 例如,"aaabbbb"匹配/a*b*/的结果是aaabbbb,匹配/a*b*?/的结果是aaa,匹配/a*?b*/的结果是什么都没有。跟你想的一样么?选择(alternation)、分组(grouping)和引用(references)
|这个符号从左向右选择第一个可以匹配的模式,例如"aaabbb"匹配/a*|a*b*|b*/的结果是aaa。 ()可以构造表达式与|,*,+,?等组合使用。例如/java(script)?/可以匹配"java"或"javascript"(优先)。 ()还可以帮助抽取子模式。例如/[a-z]+\d+/可以匹配字母加数字,但是如果你真正关心的是匹配成功后的数字部分,那么,/[a-z]+(\d+)/可以帮到你。 \加一个数字可以引用前面的表达式,无论是否嵌套,总是数左括号的位置。例如/['"][^'"]*['"]/的本意是匹配一对双引号或一对单引号界定的字符串,这个公式还不够严谨。正确的写法是/['"][^'"]*\1/ (?:开头意味着不让引用,例如/([Jj]ava(?:[Ss]cript)?)\sis\s(fun\w*)/这个模式如果有\2,那么引用的就是(fun\w*)了。提醒:引用提取的是匹配结果(字符串)而不是公式。
锚点(位置匹配): 锚点本质上是对匹配条件的强化。 最基本的锚点就是^和$,表示字符串的开始位置和结束位置。 例如,\s可以表示空格,用它提取单词/\sJava\s/,会连着空格一起提取出来" Java ",如果不需要空格则可以用/\bJava\b/,提取出来的就是"Java"。 \b就是边界的意思。\B表示无边界。例如/\Bscript\b/可以匹配"javascript"提取"script",/\bscript\b/不能,它返回null。 (?=和(?!分别规定字符串为边界。例如/Java(?!Script)/可以匹配"Java is powerful",不能匹配"JavaScript is powerful"。标记(Flags):
在正则表达式结尾处。i表示不区分大小写。(已验证) g表示找到全部匹配结果。(有待验证) m表示多行匹配。(有待验证)转载地址:http://wiidx.baihongyu.com/