2011-05-12 61 views
6

我正在做一個簡單的Lookbehind Assertion來獲取網段的一部分(下面的例子),但不是獲得匹配我得到以下錯誤:Javascript/RegExp:Lookbehind Assertion導致「無效組」錯誤

Uncaught SyntaxError: Invalid regular expression: /(?<=\#\!\/)([^\/]+)/: Invalid group 

這裏是我運行腳本:

var url = window.location.toString(); 

url ==http://my.domain.com/index.php/#!/write-stuff/something-else

// lookbehind to only match the segment after the hash-bang. 

var regex = /(?<=\#\!\/)([^\/]+)/i; 
console.log('test this url: ', url, 'we found this match: ', url.match(regex)); 

結果應該是write-stuff

任何人都可以闡明爲什麼這個正則表達式組導致這個錯誤嗎?看起來像一個有效的RegEx給我。

我知道如何獲得我需要的細分的替代方案,所以這實際上只是幫助我理解這裏發生的事情,而不是獲得替代解決方案。

感謝您的閱讀。

J.

+0

你可以給一些示例輸入字符串,它的哪些部分必須由正則表達式匹配? – Shekhar 2011-05-12 05:36:37

+0

我已經將它從代碼塊中移動到主要示例。上面更新。請讓我知道你是否想要更多的細節,我會很樂意發佈它。 – Jannis 2011-05-12 05:45:17

回答

9

我相信JavaScript不支持正面回顧後。你將不得不做更多的事情是這樣的:

<script> 
var regex = /\#\!\/([^\/]+)/; 
var url = "http://my.domain.com/index.php/#!/write-stuff/something-else"; 
var match = regex.exec(url); 
alert(match[1]); 
</script> 
相關問題