2011-05-10 111 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]);