我最近读过有关Java Script正则表达式的内容,但我感到很困惑
我的作者说必须在所有正则表达式声明的开头和结尾包含插入符号(^
)和美元符号($
)?为什么实际需要这个?它的目的是什么?
如果我错了,请纠正我!
答案 0 :(得分:27)
Javascript RegExp()允许您指定多行模式(m),它可以更改^
和$
的行为。
^
表示多行模式下当前行的开头,否则为字符串的开头
$
表示多行模式下当前行的结尾,否则表示字符串的结尾
例如:这允许您在下一行以“var”/;$\n\s*var/m
快速regexen还需要一个“锚点”,在某处开始搜索字符串中的某个地方。这些字符告诉正则表达式引擎从哪里开始查看并且通常会减少回溯的数量,在许多情况下使你的正则表达式更快,更快。
注意:这些知识来自Nicolas Zakas的High Performance Javascript
结论:你应该使用它们!
答案 1 :(得分:10)
^
表示输入字符串的开头。
$
代表结束。
您实际上不必在开始和结束时使用它们。你可以在任何地方使用em =)正则表达式很有趣(而且令人困惑)。他们不代表一个角色。它们代表了开始和结束。
答案 2 :(得分:4)
它们匹配字符串的开头(^
)和字符串的结尾('$')。
在匹配字符串开头或结尾的字符串时,应使用它们。但是,我不会说你有来使用它们。
答案 3 :(得分:2)
^
在测试字符串的开头处锚定RE的开头,并且$
将RE的末尾锚定在测试字符串的末尾。如果那就是你想要的,那就去吧!但是,如果您使用^.*theRealRE.*$
形式的RE,那么您可能需要考虑删除锚点并仅使用RE的核心。
默认情况下,某些语言会强制RE在两端锚定。
答案 4 :(得分:2)
我测试了这些。
1。 / ^ a /匹配abb,ab但不是ba,bab,bba。
2。 / a /匹配abb,ab和ba,bab,bba。
我认为/ ^ a /匹配这样的字符串开始a。
/ a /匹配这样的字符串包含一个。
类似于/ ^ a /,/ a $ /匹配ba,a,但不匹配ab,bab。
参考http://www.regular-expressions.info/anchors.html。
如果您在上面或我这里通知了错误(或奇怪)的句子,我会感谢你。