详情

首页手游攻略 一文完整指南正则表达式中的特殊符号

一文完整指南正则表达式中的特殊符号

佚名 2026-09-02 19:10:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“一文详细解析正则表达式中的特殊符号”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 正则表达式中的特殊符号
  • .的作用
  • +的作用
  • ?的作用
    • 情况1:单独采用
    • 情况2:作为非贪婪修饰符(与量词组合)
  • *的作用
    • ^的作用
      • $的作用
        • 综合对比表
          • 总结

            正则表达式中的特殊符号

            如:

            preg_match('/.+?hxx/is', hxx));

            在这个场景下,得到,0,表示没有匹配,这是因为 .+?的作用,具体讲一下。

            .的作用

            • 作用:匹配除换行符(n)以外的任意单个字符。
            • 修饰符影响:当采用s修饰符(单行模式)时,.也能匹配换行符。

            如:

            preg_match('/a.b/', acb));

            • 有.时:能够匹配像aabacba b这样的字符串,因为.能够匹配任意字符(除了换行符,除非采用s修饰符)。
            • 无.时(比如/ab/):只能匹配ab,不能匹配中间有其他字符的情况。

            +的作用

            • 作用:匹配前面的子表达式一次或多次(贪婪模式,尽可能多地匹配)。
            • 组合采用:当与?组合成+?时,表示非贪婪模式(尽可能少地匹配)。

            如:

            preg_match('/a+/', aaa));

            • 有+时:能够匹配一个或多个连续的a,如aaaaaa等。
            • 无+时(比如/a/):只能匹配单个a,不能匹配多个。

            ?的作用

            • 作用:
              • 单独采用时:匹配前面的子表达式零次或一次(即前面的内容是可选的)。
              • 紧跟在量词(如*+?{n}等)后面时:将贪婪模式转换为非贪婪模式(最小匹配)。

            情况1:单独采用

            如:

            preg_match('/a?b/', ab));

            • 有?时:能够匹配b(因为a出现0次)或aba出现1次),但不能匹配aab
            • 无?时(比如/ab/):只能匹配ab,不能匹配b

            情况2:作为非贪婪修饰符(与量词组合)

            如:

            preg_match('/a+?b/', aab));

            • 有?(非贪婪模式)时:在字符串aaab中,会匹配aab(因为+?会尽可能少地匹配,只匹配一个a,随后遇到b就停止)。
            • 无?(贪婪模式)时:在字符串aaab中,会匹配整个aaab(因为+会尽可能多地匹配)。

            *的作用

            • 有*: 允许前面的元素出现0次或多次。即该元素能够没有,也能够重复多次。
            • 无*: 前面的元素必须恰好出现一次(如果没有其他量词修饰的话)。

            如:

            preg_match('/ab*c/', 'ac');    // 匹配 "ac"(b出现0次)
                                         // 匹配 "abc"
                                         // 匹配 "abbbbc"

            ^的作用

            作用:

            • 匹配字符串的开始位置
            • 在多行模式(m 修饰符)下也匹配每行的开头

            如:

            preg_match('/^abc/', 'abc');     //匹配 "abc123"
                                            //不匹配 "123abc"

            $的作用

            作用

            • 匹配字符串的结束位置
            • 在多行模式(m 修饰符)下也匹配每行的结尾

            如:

            preg_match('/abc$/', 'abc');     //不匹配 "abc123"
                                            //匹配 "123abc"

            综合对比表

            元字符示例表达式匹配行为示例输入匹配结果
            ./a.b/匹配任意单个字符(除换行符)aXb匹配aXb
            ./ab/只能匹配字面abaXb不匹配
            +/a+/匹配1个或多个aaaa匹配整个aaa
            +/a/只能匹配单个aaaa只匹配第一个a
            ?(单独)/a?b/a出现0次或1次b匹配b
            ?/ab/只能匹配abb不匹配
            +?/a+?b/非贪婪匹配:尽可能少地匹配aaaab匹配aab(从第二个a开始)
            +(无?/a+b/贪婪匹配:尽可能多地匹配aaaab匹配整个aa
            ^/^a/匹配出现在开头的aa匹配到了开头的 a

            总结

            就是最近经常遇到一些这类的 特殊符号,搞不懂什么意思,网上也没有很全面的教程,就问al,自己总结了一下。

            到此这篇关于正则表达式中特殊符号的文章就介绍到这了,更多相关正则表达式特殊符号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!

            您可能感兴趣的文章:

            • 正则表达式(RegExp)判断文本框中是否包含特殊符号
            • 正则表达式中特殊符号及正则表达式的几种方法总结(replace,test,search)
            • php中正则表达式中的特殊符号

            相关资讯
            点击查看更多
            游戏推荐
            推荐专题
            热门阅读
            推荐下载