2011-05-16 269 views
0

我想和相互比较两个字符串,但我得到了与支架一个小问题。 欲寻求看起来像这样的字符串:括号正则表达式

CAPPL:LOCAL.L_hk [1] .vorlauftemp_soll

引用那些托架是看似无用。

我这个代码

var regex = new RegExp("CAPPL:LOCAL.L_hk\[1\].vorlauftemp_soll","gi"); 
var value = "CAPPL:LOCAL.L_hk[1].vorlauftemp_soll"; 
regex.test(value); 

有人谁可以帮我试了一下?

回答

5

这是没用的,因为你正在使用字符串。你需要躲避反斜线以及:

var regex = new RegExp("CAPPL:LOCAL.L_hk\\[1\\].vorlauftemp_soll","gi"); 

或者使用正则表达式文字:

var regex = /CAPPL:LOCAL.L_hk\[1\].vorlauftemp_soll/gi 

未知的转义字符是在JavaScript中忽略,因此"\["产生相同的字符串作为"["

+0

谢谢,它的工作;-) – Andreas 2011-05-16 09:41:00

1

要生成的正​​则表达式(其中[是一个特殊字符可以与\转义)使用一个字符串(其中\是一个特殊的字符)。

var regex = /CAPPL:LOCAL.L_hk\[1\].vorlauftemp_soll/gi; 
2

value,你有(1)而不是[1]。所以,如果你期望正则表达式匹配而不是,那就是因为这个原因。

的另一个问题是,你在你的表达式中使用""。为了使用JavaScript编写的正则表达式,使用/.../g代替"..."

您可能还需要逃避你表达的点。 .的意思是“任何不是换行符的字符”。另一方面,你希望点符合字面意思:\.

+0

非常好的观点,虽然'新的RegExp(“a +”,“g”)'在JavaScript中是有效的,并且当你想动态地创建一个正则表达式对象时是必须的(例如,使用一个字符串文字:'“\\ [”+ name +“\\ [”'')。 – Kobi 2011-05-16 09:43:25

+0

我用“”,因为我测试在TryEditor正则表达式。 – Andreas 2011-05-16 09:46:26