2016-07-22 68 views
1

使用正则表达式时只使用^^.*的区别是什么?Solo Caret vs. Caret with greedy可选字符

似乎只有^可以是一个有效的模式(不只是一个锚点)。上的jsfiddle

测试结果: - https://jsfiddle.net/wLvx0mus/4/

+1

给我们一个例子。取决于上下文,'^'可以是几个不同的东西。它可以是[String Anchors](http://www.regular-expressions.info/anchors.html),[Literal Character](http://www.regular-expressions.info/characters.html)或[Character类](http://www.regular-expressions.info/shorthand.html) –

+0

许多用户使用regex101显示正则表达式示例。 [这是我想你问的一个例子。](https://regex101.com/r/zU7kG4/1) –

+0

在我看来,我可以使用一个插入符号(最短的选项)来表示“任何” ,那么为什么要使用^。*(更长)。 –

回答

1

是的,/^/是一个有效的模式。它将匹配它适用于任何字符串,所以它没有好搜索,验证或提取文本,但更换是非常有用的:

result = subject.replace(/^/mg, "gronk"); 

这将增加gronk每行的开头。鉴于此:

result = subject.replace(/^.*/mg, "gronk"); 

...将用gronk替换每行的内容。

1

假设你正在使用它作为串字符的开始,一个字符串的开头匹配,另一个代表任何类型的0个或更多字符从头开始的字符串

作为替代,第一个将有效地预先替换您的替换值,而另一个将用替换值替换所有值。

然而,如果要在字符类使用^,也可能是负的匹配标志(例如[^.*]应该表示这不是一个字面.*任何字符)。无论如何,在不了解您的案例如何使用的情况下提供有用的答案是非常困难的。另外,请提供您正在使用的正则表达式。语法上的差异可能会产生很大的影响。