JS中的正则expression式中需要使用caret(^)和dollar符号($)吗?

我最近读了Java Script正则expression式,但是我感到困惑。
我的作者说在所有正则expression式声明的开头和结尾必须包含脱字符( ^ )和美元符号( $ )? 为什么这实际上需要? 它的目的是什么?

纠正我,如果错了!

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

^表示多行模式下当前行的开始,否则表示string的开始

$表示多行模式下当前行的结束,否则表示string结束

例如:这允许你在下一行以“var” /;$\n\s*var/m开始的一行尾部匹配类似分号的东西

快速regexen也需要一个“锚点”,在某个地方开始它的searchstring的某处。 这些字符告诉正则expression式引擎从哪里开始寻找,并且通常减less回溯的次数,使得正则expression式在很多情况下要快得多

注意:这些知识来自Nicolas Zakas的高性能Javascript

结论: 你应该使用它们!

^代表inputstring的开始。

$表示结束。

你不必在开始和结束时使用它们。 你可以在任何地方使用em =)正则expression式很有趣(和令人困惑)。 他们不代表一个人物。 他们代表着开始和结束。

这是一个非常好的网站

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

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

^在testingstring的开始处锚定RE的开始,并且$在testingstring的结尾处锚定RE的结尾。 如果这就是你想要的,去吧! 但是,如果您使用forms为^.*theRealRE.*$ RE,那么您可能需要考虑放弃锚点,并仅使用RE的核心。

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

我已经testing过这些。
1. / ^ a /匹配abb,ab但不是ba,bab,bba。
2. / a /匹配abb,ab和ba,bab,bba。

我认为/ ^ a /匹配这样的string开始一个。
/ a /匹配这样的string包含一个。

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

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

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