2011-09-17 99 views
0

我嘗試使用JavaScript來匹配兩個標記%{}%之間的內容。匹配與[ S S] *? vs(。)+ regexps

我有一個正則表達式測試工作,但是當我把它們放進我的代碼,他們不工作正則表達式。我相信這可能是一個逃避的問題,但我不確定。

下面的正則表達式的作品,但不允許空白:

var databinder = new RegExp("%\{(.)+\}%", 'g'); 

以下的正則表達式測試正則表達式的作品,並允許空格,但是它並沒有在我的代碼返回任何配襯:

[\S\s]*? 

是什麼原因造成的:

var databinder = new RegExp("%\{[\S\s]*?\}%", 'g'); 

當我刪除它只能正則表達式在第二個例子中不起作用?

這裏是我的文本相匹配的例子:

<td align="right" style="width: 123px;">%{toFixedEx(#{surcharge()}#,2,4)}%</td> 
<td align="right" style="width: 123px;">%{toFixedEx(#{extendedPrice()}#,2,2)}%</td> 

回答

4

你需要使用字符串時加倍逃避任何特殊的正則表達式修飾符反斜線:

var databinder = new RegExp("%\\{[\\S\\s]*\\}%", 'g'); 

,或者您可以使用正則表達式文字:

var databinder = /%\{[\S\s]*?\}%/g; 
+2

習慣性地逃避''{不傷害,它會保存你的疑惑,爲什麼之類的東西''11 {} 23」 M atch(/ 11 {23} /)'不「工作」。 –