• 注册
  • 前端后端 前端后端 关注:0 内容:26

    正则表达式“元字符,限定符,修正符,反义词”() [] {} 和 ^ $ 的作用

  • 查看作者
  • 打赏作者
    • 前端后端
    • Lv.14
      帅气冲天

      问题前言

      写一篇比较全面且实用的正则表达式,供大家参考,有不足之处还请多多指教哈~

      到底什么是正则表达式?

      在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。

      正则表达式的 () [] {} 是什么意思?

      正则表达式的 ^ $ 是什么意思?

      常用的符号

      常用元字符
      代码 说明
      . 匹配除换行符以外的任意字符
      \w 匹配字母或数字或下划线
      \s 匹配任意的空白符
      \d 匹配数字
      \b 匹配单词的开始或结束
      ^ 匹配字符串的开始
      $ 匹配字符串的结束
      常用限定符
      代码/语法 说明
      * 重复零次或更多次
      + 重复一次或更多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次
      常用模式修正符
      代码/语法 说明
      i 表示在进行匹配的时候不区分大小写
      m 多行识别.即将字符串视为多行,不管是那行都能匹配
      s 将字符串视为单行,转义回车换行符作为普通字符
      g 表示全局匹配
      x 将模式中的空白忽略
      A 强制从目标字符串开头匹配
      D 强制尾部无任何内容.若使用$限制结尾字符,则不允许结尾有换行
      U 禁止贪婪匹配,只匹配最近的一个字符串(不重复匹配)
      e 配合PHP函数preg_replace()使用,可以把匹配来的字符串当作正则表达式执行
      常用反义词
      代码/语法 说明
      \W 匹配任意不是字母,数字,下划线,汉字的字符
      \S 匹配任意不是空白符的字符
      \D 匹配任意非数字的字符
      \B 匹配不是单词开头或结束的位置
      [^x] 匹配除了x以外的任意字符
      [^aeiou] 匹配除了aeiou这几个字母以外的任意字符


      () [] {} 的区别

        ()    是为了提取匹配字符串的,表达式中有几个()就有几个相应的匹配字符串

        []    是定义匹配的字符范围( [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字 )

        {}    一般是用来匹配的长度( \s{3} 表示匹配三个空格,\s[1,3] 表示匹配1到3个空格 )

      圆括号()是组,主要应用在限制多选结构的范围/分组/捕获文本/环视/特殊模式处理

      1. (abc|bcd|cde) – 表示这一段是abc、bcd、cde三者之一,顺序也必须一致

      2. (abc)? – 表示这一组要么一起出现,要么不出现,出现那则按顺序出现

      3. (?:abc) – 表示找到一样abc的一组,但是不记录,不保存到变量中

      例如:(aaa)(bbb)(ccc)(?:ddd)(eee),$1值对应(aaa),$2值对应(bbb),$3值对应(ccc),$4值对应(eee)

      4. a(?=bbb) – 顺序环视 表示a后面必须紧跟3个连续的b

      5. (?i:xxxx) – 不区分大小写   (?s:.*)跨行匹配,可以匹配回车符

      方括号[]是单个匹配 字符集/排除字符集/命名字符集

      1. [0-3],表示找到一个位置上的字符只能是0到3折四个数字,与(abc|bcd|cde)的作用比较类似,但圆括号可以匹配多个连续的字符

      而一对方括号只能匹配单个字符

      2. [^0-3] 表示找到这个位置上字符只能是除了0到3之外的所有字符

      3. [:digit:] 0-9 [:alnum] A-Za-z0-9

      ()和[]的区别

      ()内的内容表示的是一个表达式,()本身不匹配任何东西,也不惜那是匹配任何东西,只是把括号内的内容作为

      同一个表达式来处理,例如(ab){1,3},就表示ab一起连续出现最少1次,最多三次。如果没有括号的话,ab{1,3},

      就表示a 后面紧跟的b出现的最少一次,最多三次。另外,括号在匹配模式中也跟重要。这个就不延伸了。

      []表示匹配字符在[]中,只出现一次,并且reshuffle字符写在[]会被当成普通字符来匹配,例如 “[(a)]” 会匹配 “(” “a” “)” 这三个字符。

      所以()[] 无论是作用还是表示的含义。都有天壤之别,没有什么联系。

      ^ $ 的作用

      ^   从字符串开头进行匹配

      $   从字符串末尾进行匹配

      如对于字符串“aaaAAA”

      ^((?![A-Z]).)*  仍会匹配到“aaaAAA”

      而  ^((?![A-Z]).)*$  才能保证不匹配。

      注:?!  意为不包含

      使用说明

      请根据自己实际情况做相应修改

      请登录之后再进行评论

      登录

      我关注的论坛

      暂没有数据

    • 发布内容
    • 做任务
    • 实时动态
    • 偏好设置
    • 帖子间隔 侧栏位置: