2013-11-22 36 views
3

我有這個字符串:的Javascript正則表達式:匹配之間的 ']' 和 ' - ',錯誤:無效的量詞

var str = "[RANKING] Bank President - Main office." 

的目的:

']'' - '之間的文本( 注意空格)將在Javascript中匹配。

努力:

到目前爲止,

1)我已經試過

(?<=\])(.+)(?= -)/gi

這工作完全在這裏:http://regexr.com?37abq然而,在JavaScript中我得到一個Errorinvalid quantifier in 螢火蟲

2)我也曾嘗試:

\](.+) - 

這工作得很好,在這裏:http://www.rexfiddle.net/TzsXnjQ除了它甚至相匹配的']'' - ',因此,使其非必要在一定程度上。

3)並添加類似:

\]^(.+)$ - 

代碼進入休眠...

任何建議高度讚賞。

+0

[JavaScript並不支持積極lookbehinds(?<=)](http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript)。這就是爲什麼你的第一個選項不起作用。 –

+0

@BrandonBoone,謝謝,我也注意到了。任何黑客? – ErickBest

+0

您的第三次嘗試不起作用,因爲您試圖在字符串開頭('^')元字符之前匹配字面''],並嘗試在字符串結束後匹配'-'( '$')元字符。你不能在字符串的終端之外匹配任何東西,因爲在字符串的末尾沒有任何東西存在,所以正則表達式永遠不會匹配任何東西。 – ajp15243

回答

3

選項#2應該工作,剛拿到第二場比賽指標,如

var str = "[RANKING] Bank President - Main office." 
var matches = str.match(/\](.+?) - /); 
if (matches) { 
    var stringYouWant = matches[1]; 
} 

選項1不起作用,因爲在JS的正則表達式庫不支持向後看

+0

感謝哥們,雖然會奇怪的匹配值可能只是'字符串'銀行總裁'而不是'陣列'......這可能嗎? – ErickBest

+2

@ErickBest否,['String.match'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)將始終返回一個數組,因爲您可以使用正則表達式的'g'(全局)標誌來匹配你的正則表達式匹配的多個字符串,'String.match'必須同時返回所有匹配的部分,這很容易用數組完成。而不是改變API,最簡單和最一致的方法就是保留陣列,即使是單個結果,就像你的情況一樣。 – ajp15243

+1

當然,再次感謝。所以,我已經決定使用我的_suggestion#2_混合你'match'風格,因此它看起來像:'var stringYouWant = str.match(/\](.+?) - /)[1];'..這就像VOODOO一樣工作!再次感謝。 – ErickBest

相關問題