JavaScript中的正则表达式

JavaScript 正则表达式的构成方式

  • 字面量/pattern/flags

    • pattern是表达式文本

    • flags是特殊参数: g ——全局匹配; i——忽略大小写; m ——让开头(^)和结尾($)字符工作在多行模式(由 \n 或 \r 分割的)

    • 多行模式:每一行的开头结尾也可匹配。关闭多行模式则只匹配整个字符串的开头和结尾

    • 静态常量:构造完成后保持不变


- 构造函数:new RegExp("pattern","flags")

  • pattern是字符串,注意对 \ 的转义(” \\ “)

  • 运行时编译→表达式可变

表达式文本由普通字符特殊字符以及对应的重复规则组合而成。

例子:/abc/匹配字符串中的’abc’子串

特殊字符

★ 特殊字符都是单个字符!

  • 字符类别

    • .英文句点,小数点——匹配任意单个字符(换行符除外)
    • \d一个数字[0-9]\D 一个非数字[^0-9]
    • \w 一个字母或数字或下划线[a-zA-Z0-9_]\W一个非字母非数字非下划线的字符[^a-zA-Z0-9_]
    • \s 一个空白符;\S 一个非空白符
    • \xhh 一个编码为两位十六进制数(hh)的字符(ASCII码)
    • \uhhhh 一个Unicode字符,四位十六进制数
    • 其他:RexExp-MDN
  • 字符集合

    • [abcde]匹配集合中的任意一个字符。abcde 等价于 a-e
    • [^abcde]匹配任意一个不在集合中的字符。abcde 等价于 a-e
  • 边界

    • ^ 开头(字符串或每行)
    • $ 结尾(字符串或每行)
    • \b 单词边界
    • \B 非单词边界(内部)

分组

  • 捕获括号 (pattern) :匹配表达式并保存括号内的字符串。

  • replace()函数的第二个参数中使用$1,$2,…$9获取

  • 反向引用 \n (n是正整数):指向正则表达式中左起第 n 个括号所匹配的字符串

  • 非捕获括号 (?:pattern) :匹配但不保存

//不大理解。放上另一个说法:分组用于指定子表达式,单独确定重复次数或其他操作。参考

数量词(表达式或分组的重复次数)

位于表达式后面

  • *:0或多次
  • + :1或多次
  • ? :0或1次
  • {n,} :至少 n 次
  • {n,m}:至少 n 次,至多 m 次

默认匹配模式是贪婪模式,即一个匹配结果包含尽可能多的字符。在上述数量词后加上一个 ? 就设置成非贪婪模式,即一个匹配结果包含尽可能少的字符。

★ 另有一条更高优先级的匹配规则:最先开始的匹配拥有最高优先权

  • {n} :n次(多于 n 时也只匹配n次,无所谓贪婪懒惰)
  • x(?=y):只有当 x 后面紧跟着 y 时,才匹配 x 。
  • x(?!y) :只有当 x 后面不紧跟着 y 时,才匹配 x 。
  • x|y :匹配 x 或 y 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值