正则表达式
- RegExp(regexp, option)类实现,可以简写成/regexp/option
- option: g: global, i: ignore case
- 方法:string.test(regexp), string.exec(regexp)[返回所有匹配的地方], string.serch(regexp)[正则版的indexOf()], string.replace(regexp, str|funtion), string.split(regexp)
简单模式
- 元字符:( [ { / ^ $ | ) ? * + . 使用的时候用'/'转义
- 特殊字符:/x62[16进制], /u0062[unicode], /t, /n, /r, /f[换页], /a[alert],/e[escape], /cX[控制字符], /b[回退字符], /v[垂直制表符], /0[空字符]
- 预定义字符: .==[^/n/r], /d == [0-9], /D == [^0-9], /s == [ /t/n/x0B/f/r], /S == [^ /t/n/x0B/f/r], /w=[a-zA-Z_0-9], /W=[^a-zA-Z_0-9]
量词
简单量词
- ?: 出现0次或1次
- *: 出现0次或多次
- +: 出现1次或多次
- {n}:出现n次
- {n, m}: 至少出现n次,但不超过m次
- {n,}:至少出现n次
贪 婪的、惰性的和支配性的量词
- 贪婪量词:尽可能多地匹配更多的字符(default)
- 惰性量词:尽可能少的匹 配更少的字符(简单量词后加?)
- 支配量词:只尝试匹配整个字符串(简单量词后加+)
复杂模式
- 分 组: 用()分组,分组可嵌套
- 反向引用: 利用分组,$n
- 候选: 类似或 |
- 非 捕获性分组: 避免反向引用的开销。(?:xxx)
- 前瞻(look ahead): (?=xxx)-->positive, (?!xxx)-->negative
- 边界:
- ^:行开头
- $: 行结尾
- /b: 单词边界
- /B: 非单词边界
- 多行模式: /m选项
RegExp 对象
instance属性
- global: /g
- ignoreCase: /i
- lastIndex: 代表下次匹配将会从哪个字符开始,只在exec()或test()时设置。
- multiline:/m
- source: 正则表达式的源字符形式。
静态属性
- 静态属性对所有正则表达式都有效,有两个名 字,一个长名,一个短名。每次执行exec()或test()时,所有的属性(除multiline外)都会被重新设置
- input/$_: 最后用于匹配的字符串(传递给exec()或test()的字符串)
- lastMatch/$&: 最后匹配的字符串
- lastParen/$+: 最后匹配的分组
- leftContext/$`:在上次匹配的前面的字符串
- multiline/$*: 用于指定是否所有的表达式都使用多行模式。ie和opera暂不支持,所以最好用/m设置多行
- rightContext/$':在上次 匹配的后面的字符串
常用模式
- 日期,dd/mm/yyyy: 采用非捕获性分组:date = /(?:0[1-9]|[12][0-9]|3[01])//(?:0[1-9]|1[0-2])//(?:19|20/d{2})/;
- 信 用卡号:参见http://www.beachnet.com/~hstiles/cardtype.html
- 电子邮件地 址:email = /^(?:/w+/.?)*/w+@(?:/w+/.?)*/w+$/