正则表达式

一. 正则语法

1. 字符

  • 普通字符:按字面意义匹配
  • 元字符
    • \d 任意数字字符,等价 [0-9]
    • \w 任意字母数字字符,等价 [A-Za-z0-9_]
  • 特殊字符
    • \ 转义字符,用于匹配特殊字符本身
    • . 任意字符(除换行符 \n 之外)
    • | 用于指定多种模式的选择,如 m|food 会匹配 m 或 food,要想匹配 mood 或 food,需要使用 (m|f)ood
  • 字符集合
    • [ ] 匹配括号内的任意一个字符。例如,[abc] 匹配字符 a、b 或 c
    • [^ ] 匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 a、b 、c 以外的任意字符

2. 量词

  • * 匹配前面的模式零次或多次,等价 {0,}
  • + 匹配前面的模式一次或多次,等价 {1,}
  • ? 匹配前面的模式零次或一次,等价 {0,1},在其他限定符(*, +, ?, {n}, {n,}, {n,m})之后使用 ? 使匹配是非贪婪的,会尽可能少的匹配字符串。如 ‘o+?’ 将匹配单个 o
  • {n} 匹配前面的模式 n 次
  • {n,} 匹配前面的模式至少 n 次
  • {n,m} 匹配前面的模式至少 n 次且不超过 m 次

3. 边界匹配

  • ^ 匹配字符串的开头
  • $ 匹配字符串的结尾
  • \b 匹配一个单词边界,即字与空格间的位置

4. 分组

  • ( ) 用于分组并捕获(缓存)子表达式
  • (?: ) 用于分组但不捕获子表达式
  • \num 反向应用,和 () 一起使用,匹配第 num 个分组的匹配的内容,如 (x)(y)\2 会匹配 xyy,这里的 \2 指的是第二个分组的 y
  • exp1(?=exp2) 查找 exp2 前的 exp1
  • (?<=exp2)exp1 查找 exp2 后面的 exp1
  • exp1(?!exp2) 查找后面不是 exp2 的 exp1
  • (?<!exp2)exp1 查找前面不是 exp2 的 exp1

5. 修饰符

  • i 将匹配设置为不区分大小写(ignore)
  • g 全局匹配,查找所有的匹配项(global)
  • m 多行匹配,使边界字符 ^ 和 $ 匹配每一行的开头和结尾

6. 运算符优先级

相同优先级从左到右进行计算

不同优先级从高到低分别为:

  • 转义字符 :\
  • 方括号和圆括号: (),(?:),[]
  • 位置和顺序: ^,$,字符
  • 或操作: |

二. 正则表达式示例

语法:/正则表达式主体/修饰符(可选)

  • 中文正则:/[\u4E00-\u9FA5]/
  • 中国手机号:/1((3\d)|(4[5-79])|(5[0-35-9])|(6[5-7])|(7[0-8])|(8\d)|(9[189]))\d{8}/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值