2011-05-10 132 views
4


我試圖檢索類別部分該字符串「property_id=516&category=featured-properties」,這樣的結果應該是「特色的屬性」,我想出了一個正則表達式,並測試了它這個網站上http://gskinner.com/RegExr/ ,並按預期工作,但是當我將正則表達式添加到我的JavaScript代碼時,我有一個「無效的正則表達式」錯誤,任何人都可以告訴我什麼是搞砸這個代碼?無效的正則表達式錯誤

謝謝!

var url = "property_id=516&category=featured-properties" 
var urlRE = url.match('(?<=(category=))[a-z-]+'); 
alert(urlRE[0]); 

回答

7

JavaScript中不支持正向後視(您的?<=),這會導致RegEx失敗。

你可以模仿他們在一大堆不同的方式,但是這可能是一個簡單的正則表達式來把工作給你做:

var url = "property_id=516&category=featured-properties" 
var urlRE = url.match(/category=([^&]+)/); 
// urlRE => ["category=featured-properties","featured-properties"] 
// urlRE[1] => "featured-properties" 

這是一個超級簡單的例子,但搜索的StackOverflow的如果您需要它們,RegEx模式將解析URL參數,從而形成更強大的示例。

+0

+1爲詳細的錯誤描述(積極lookbehinds) – DanielB 2011-05-10 16:12:21

3

語法混亂了你的代碼。

var urlRE = url.match(/category=([a-z-]+)/); 
alert(urlRE[1]); 
+0

要拼出來:使用斜槓作爲正則表達式的分隔符,而不是引號。 – Spudley 2011-05-10 16:05:33

+0

它仍然給我這個錯誤「未捕獲SyntaxError:無效正則表達式:/(?<=(category =))[a-z - ] + /:無效組」 – KarimMesallam 2011-05-10 16:07:11

+0

我已更新表達式以使用JavaScript。有一些不支持的表達式。 – DanielB 2011-05-10 16:09:21

0
var url = "property_id=516&category=featured-properties", 

    urlRE = url.match(/(category=)([a-z-]+)/i); //don't forget i if you want to match also uppercase letters in category "property_id=516&category=Featured-Properties" 
    //urlRE = url.match(/(?<=(category=))[a-z-]+/i); //this is a mess 

    alert(urlRE[2]);