2015-12-03 76 views
1

我堅持使用javascript的代碼正則表達式模式。我想驗證這個字符串{{text}。但仍然沒有工作。 對於c#的工作發現。這裏是C代碼#Javascript正則表達式模式「{{text}}」

"{{[^\{\s}]+\}}" 

我想用{{end with}}開頭。在兩者之間可以是文字或數字

+0

反正..我認爲只是'var arrayResults = myString.match(/{{.*?}}/ g);'是優越的:_https://regex101.com/r/xI2gP9/1_ – 2015-12-03 03:04:43

+1

另外,什麼你想達到什麼目的?而且,爲什麼正則表達式? ..也許有其他真正的解析方法,可以找到方括號內的括號,正則表達式不能做的事情。 – 2015-12-03 03:14:29

+1

爲什麼'{{text}'會匹配一個正則表達式,該正則表達式需要** 2 **關閉大括號? – Ultimater

回答

-1

正則表達式的問題在於,你將它視爲一個字符串,並且反斜槓在此過程中迷失了方向。如果您將"{{[^\{\s}]+\}}"鍵入警報中,您將看到它顯示{{[^{s}]+}},從而丟失了所有反斜槓。如果你想保留反斜槓,你需要加倍轉義它:"{{[^\\{\\s}]+\}}"這就是假設你正在將它發送到RegExp,就像RegExp("{{[^\\{\\s}]+\}}")那樣。這很好,但它與說/{{[^\{\s}]+}}/這是用於構建正則表達式的JavaScript的文字語法相同。因此,你會怎麼做:

var reg1=RegExp("{{[^\\{\\s}]+\}}"); 
var reg2=/{{[^\{\s}]+}}/; 
reg1.test('{{text}}');//true 
reg2.test('{{text}}');//true 

你也可以把它寫成一行:/{{[^\{\s}]+}}/.test('{{text}}')
有幾個正則表達式的方法在那裏爲JavaScript,在一根繩子上的一些工作,希望你向它發送一個常規表達式和一些接受正則表達式並期望一個字符串。因此,要按照您將字符串和正則表達式發送給那裏的方法的順序注意。

+0

我試過這個..它的工作!非常感謝你 –

4

試試這個正則表達式:

^\{\{[\d\w]+\}\}$ 

它更有意義,我明確地匹配任何數目的字符或數字的,而不是試圖匹配任何不包括空格。你原來的正則表達式匹配{{@}},我認爲你不需要。

Regex101

更新:

由於@Washington指出,括號不是在JavaScript中的特殊字符,因此,你應該需要逃避它們。那麼看起來你所遇到的問題就是你如何匹配。

+2

順便說一句,如果你還沒有定期使用蒂姆的鏈接工具,我強烈推薦它。雖然在控制檯中調試regexp沒有問題,但由** Regex101 **提供的上下文信息很好地顯示了表達式的每一位。這是我最喜歡的在線工具之一。 – jusopi