2011-05-16 327 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