JS - RegExp用于检测“.-”,“ - 。”

时间:2011-08-12 08:47:26

标签: javascript regex

我对我应该用来检测".-", "-."的RegExp感到困惑,它确实将这些组合传递为有效但同时"-_","_-"也得到了验证。我错过了什么或者没有正确地逃避某些事情吗?

 var reg=new RegExp("(\.\-)|(\-\.)");

实际上似乎任何包含'-'的组合都会被传递。它

谢谢大家。

4 个答案:

答案 0 :(得分:2)

您需要使用

"(\\.-)|(-\\.)"

答案 1 :(得分:1)

由于您使用的是带有RegExp构造函数而不是/的字符串,因此需要转义两次。

>>> "asd_-ads".search("(\.\-)|(\-\.)")
3
>>> "asd_-ads".search(/(\.\-)|(\-\.)/)
-1
>>> "asd_-ads".search(new RegExp('(\\.\-)|(\-\\.)'))
-1

答案 2 :(得分:1)

在符号/(\.\-)|(\-\.)/中,表达式是正确的。 在您选择的符号中,您必须将所有反斜杠加倍,因为它仍然具有自身的特殊含义,例如\\\n等。
请注意,此处无需转义破折号:var reg = new RegExp("(\\.-)|(-\\.)");

如果您不需要区分匹配项,则可以使用单个封闭式捕获,如果只想检查匹配项,则可以不使用; "\\.-|-\\."仍然有效。

答案 3 :(得分:0)

您正在使用双引号,因此.不会使用一个反斜杠进行转义,请使用以下表示法:

var reg = /(\.\-)|(\-\.)/;