regex 正则表达式中的插入符号(^)和美元符号($)的必要性是什么?

bnl4lu3b  于 2023-05-23  发布在  其他
关注(0)|答案(5)|浏览(140)

我最近读了一些关于JavaScript正则表达式的文章,但我很困惑。
作者说有必要在所有正则表达式声明的开头和结尾包含插入符号(^)和美元符号($)。
为什么需要它们?

cnwbcb6i

cnwbcb6i1#

Javascript RegExp()允许你指定一个多行模式(m)来改变^$的行为。
^表示多行模式下当前行的开始,否则为字符串的开始
$表示多行模式下当前行的结尾,否则表示字符串的结尾
例如:这允许您在下一行以“var”/;$\n\s*var/m开始的行末尾匹配类似分号的内容
快速regexen还需要一个“锚”点,从字符串中的某个地方开始搜索。这些字符告诉Regex引擎从哪里开始查找,通常会减少回溯的数量,在许多情况下使Regex快得多
注意:这些知识来自Nicolas Zakas的High Performance Javascript
结论:你应该使用它们!

sirbozc5

sirbozc52#

^表示输入字符串的开始。
$表示结束。
你不必在开始和结束时使用它们。你可以在任何地方使用em =)Regex很有趣(也很混乱)。他们不代表一个角色。它们代表着开始和结束。
This is a very good website

hpcdzsge

hpcdzsge3#

它们匹配字符串的开始(^)和字符串的结束('$')。
在字符串的开头或结尾匹配字符串时应该使用它们。但是,我不会说你必须使用它们。

zengzsys

zengzsys4#

我已经测试过了。

  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
    如果你把上面的错误(或奇怪)的句子通知我,我会谢谢你的。
wwtsj6pe

wwtsj6pe5#

^将RE的开头锚定在测试字符串的开头,$将RE的结尾锚定在测试字符串的结尾。如果这是你想要的,去吧!但是,如果您使用^.*theRealRE.*$形式的RE,那么您可能需要考虑放弃锚,只使用RE的核心。
一些语言默认强制RE锚定在两端。

相关问题