【问题标题】:What is the need for caret (^) and dollar symbol ($) in regular expression?正则表达式中的插入符号 (^) 和美元符号 ($) 需要什么?
【发布时间】:2011-08-20 18:31:13
【问题描述】:

我最近阅读了有关 JavaScript 正则表达式的内容,但我很困惑。

作者说必须在所有正则表达式声明的开头和结尾包含插入符号(^)和美元符号($)。

为什么需要它们?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    我已经测试过这些。
    1。 /^a/ 匹配 abb、ab 但不匹配 ba、bab、bba。
    2。 /a/ 匹配 abb、ab 和 ba、bab、bba。

    我认为 /^a/ 匹配以 a 开头的此类字符串。
    /a/ 匹配此类包含 a 的字符串。

    类似于 /^a/,/a$/ 匹配 ba、a,但不匹配 ab、bab。

    请参考http://www.regular-expressions.info/anchors.html


    如果您将上面的错误(或奇怪)句子或这个通知我,我会感谢您。

    【讨论】:

      【解决方案2】:

      Javascript RegExp() 允许你指定一个多行模式 (m) 来改变^$ 的行为。

      ^表示多行模式下当前行的开始,否则为字符串的开始

      $表示多行模式下当前行结束,否则为字符串结束

      例如:这允许您在下一行以 "var" /;$\n\s*var/m 开头的行的末尾匹配分号之类的东西

      快速正则表达式还需要一个“锚”点,在某处开始搜索字符串中的某处。这些字符告诉 Regex 引擎从哪里开始查找,并且通常会减少回溯的数量,从而使您的 Regex 在许多情况下快得多

      注意:此知识来自 Nicolas Zakas 的High Performance Javascript

      结论:你应该使用它们!

      【讨论】:

      • 多行模式是什么意思?
      • @Ant's 这意味着匹配多行字符串的每一行单独 - 在 regexpal.com 上查看
      • 是的,感谢您的回答;)主要是因为说使用锚将有助于正则表达式引擎;)谢谢;)
      • 不客气,顺便说一句,我强烈推荐你阅读 Zakas 书 :)
      • 我有兴趣阅读一本关于数据结构的书,在看到您的网站后,我得出的结论是我可以阅读“算法设计手册”:) ;)
      【解决方案3】:

      ^ 将 RE 的开头锚定在测试字符串的开头,$ 将 RE 的结尾锚定在测试字符串的末尾。如果这就是你想要的,那就去吧!但是,如果您使用的是 ^.*theRealRE.*$ 形式的 RE,那么您可能需要考虑放弃锚点并仅使用 RE 的核心。

      默认情况下,某些语言强制 RE 锚定在两端。

      【讨论】:

        【解决方案4】:

        它们匹配字符串的开头 (^) 和字符串的结尾 ('$')。

        在字符串的开头或结尾匹配字符串时应该使用它们。但是,我不会说您必须使用它们。

        【讨论】:

          【解决方案5】:

          ^表示输入字符串的开始。

          $代表结束。

          您实际上不必在开始和结束时使用它们。您可以在任何地方使用 em =) 正则表达式很有趣(而且令人困惑)。它们不代表一个字符。它们代表开始和结束。

          This is a very good website

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2022-12-04
            • 1970-01-01
            • 1970-01-01
            • 2013-06-01
            • 2012-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多