2010-10-13 62 views

回答

0

只有一個匹配,因爲不允許重疊。本場比賽是:

(^|\\+) -^

(1\\+1) - 1+1 

($|\\+) - + 

應該清楚不可能有另一場比賽中,因爲每場比賽至少需要1+1,而且也只有一個1倍左右。作爲一個單獨的說明,使用正則表達式字面簡單:

var regex = /(^|\+)(1\+1)($|\+)/g; 
+0

我沒有意識到全局匹配不能重疊。無論如何,我可以通過正則表達式匹配重疊匹配嗎? – wheresrhys 2010-10-13 00:44:33

+0

我不知道一種方式,除了在testString.substring(0)','testString.substring(1)'等上運行它的明顯(低效率)方法之外。 – 2010-10-13 00:49:18

+0

這真是一個恥辱,因爲我有使用嵌套循環實際上是比問題中的簡化示例更復雜的情況),儘管它仍然是一個非常簡單的任務,而我通過正則表達式將會非常適合。 – wheresrhys 2010-10-13 09:37:17

0

你的正則表達式不匹配字符串不止一次,因爲比賽不能重疊。你有另一個你想要匹配的示例字符串,或者你需要從字符串中得到更多的細節?

無論如何,我會使用RegExp對象字面值代替;減少轉義,你可以直接指定全局標誌。

var regex = /(^|\+)(1\+1)($|\+)/g;