我最近读了一些关于JavaScript正则表达式的文章,但我很困惑。作者说有必要在所有正则表达式声明的开头和结尾包含插入符号(^)和美元符号($)。为什么需要它们?
^
$
cnwbcb6i1#
Javascript RegExp()允许你指定一个多行模式(m)来改变^和$的行为。^表示多行模式下当前行的开始,否则为字符串的开始$表示多行模式下当前行的结尾,否则表示字符串的结尾例如:这允许您在下一行以“var”/;$\n\s*var/m开始的行末尾匹配类似分号的内容快速regexen还需要一个“锚”点,从字符串中的某个地方开始搜索。这些字符告诉Regex引擎从哪里开始查找,通常会减少回溯的数量,在许多情况下使Regex快得多。注意:这些知识来自Nicolas Zakas的High Performance Javascript结论:你应该使用它们!
/;$\n\s*var/m
sirbozc52#
^表示输入字符串的开始。$表示结束。你不必在开始和结束时使用它们。你可以在任何地方使用em =)Regex很有趣(也很混乱)。他们不代表一个角色。它们代表着开始和结束。This is a very good website
hpcdzsge3#
它们匹配字符串的开始(^)和字符串的结束('$')。在字符串的开头或结尾匹配字符串时应该使用它们。但是,我不会说你必须使用它们。
zengzsys4#
我已经测试过了。
/^a/
/a/
/a$/
wwtsj6pe5#
^将RE的开头锚定在测试字符串的开头,$将RE的结尾锚定在测试字符串的结尾。如果这是你想要的,去吧!但是,如果您使用^.*theRealRE.*$形式的RE,那么您可能需要考虑放弃锚,只使用RE的核心。一些语言默认强制RE锚定在两端。
^.*theRealRE.*$
5条答案
按热度按时间cnwbcb6i1#
Javascript RegExp()允许你指定一个多行模式(m)来改变
^
和$
的行为。^
表示多行模式下当前行的开始,否则为字符串的开始$
表示多行模式下当前行的结尾,否则表示字符串的结尾例如:这允许您在下一行以“var”
/;$\n\s*var/m
开始的行末尾匹配类似分号的内容快速regexen还需要一个“锚”点,从字符串中的某个地方开始搜索。这些字符告诉Regex引擎从哪里开始查找,通常会减少回溯的数量,在许多情况下使Regex快得多。
注意:这些知识来自Nicolas Zakas的High Performance Javascript
结论:你应该使用它们!
sirbozc52#
^
表示输入字符串的开始。$
表示结束。你不必在开始和结束时使用它们。你可以在任何地方使用em =)Regex很有趣(也很混乱)。他们不代表一个角色。它们代表着开始和结束。
This is a very good website
hpcdzsge3#
它们匹配字符串的开始(
^
)和字符串的结束('$')。在字符串的开头或结尾匹配字符串时应该使用它们。但是,我不会说你必须使用它们。
zengzsys4#
我已经测试过了。
/^a/
匹配abb,ab但不匹配ba,bab,bba。/a/
匹配abb,ab和ba,bab,bba。我认为
/^a/
匹配以a开头的字符串。/a/
匹配包含a.与
/^a/
类似,/a$/
匹配ba、a,但不匹配ab、bab。参考http://www.regular-expressions.info/anchors.html。
如果你把上面的错误(或奇怪)的句子通知我,我会谢谢你的。
wwtsj6pe5#
^
将RE的开头锚定在测试字符串的开头,$
将RE的结尾锚定在测试字符串的结尾。如果这是你想要的,去吧!但是,如果您使用^.*theRealRE.*$
形式的RE,那么您可能需要考虑放弃锚,只使用RE的核心。一些语言默认强制RE锚定在两端。