javascript: 正则表达式

正则表达式

 

  • 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+$/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅帅兔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值