2012-07-27 55 views
3

我在JavaScript中使用正則表達式的一個問題:的Javascript比賽()和無效的量詞

(?<= Received:)(.*?)(?=;) 

什麼我想是兩個字符串之間匹配everythig,在之間的這種情況下,「接收」和「;」。

這裏是我的代碼:

var someString = "BlaBlaBla Received: blablabla; BlaBlaBla" 

var receivedString = someString.match(/(?<= Received:)(.*?)(?=;)/); 

但是對於第二行,我的螢火得到一個錯誤:

Error: invalid quantifier 
Source Code: 
    var receivedDateString = dates.match(/(?<= Received:)(.*?)(?=;)); 

非常感謝您的幫助。

回答

4

JavaScript不支持lookbehind斷言:(?<= Received:)不是有效的構造。這似乎是你的錯誤的來源。

你需要的回顧後融入你的對手:

someString.match(/ Received: ([^;]*)/); 

隨着[^;]*,你甚至不需要超前了。

如果需要直接訪問第一個捕獲組的內容,你可以試試這個:

var receivedDateString =/Received: ([^;]*)/.exec(someString)[1] 

注意,這個假設將會有一個匹配(如果沒有Received:是在字符串中發現,索引操作將失敗)。

+0

謝謝@Tim,你知道我該如何使用別的東西來得到相同的結果嗎? – 2012-07-27 07:41:08

+0

@Ana:是的,使用'.exec()'。看我的編輯。 – 2012-07-27 07:43:06

+0

太棒了,我現在擁有它。非常感謝你。真正的專業。 – 2012-07-27 07:47:50