RegExp范围乱序,复杂模式

这是我的模式:

var pattern = "/(?:https?:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]*)/"; var matches = $("#search input").val().match(new RegExp(pattern)); 

当我使用它时,它给了我一个错误:

 Uncaught SyntaxError: Invalid regular expression: //(?:https?://)?(?:www.)?facebook.com/(?:(?:w)*#!/)?(?:pages/)?(?:[w-]*/)*([w-.]*)//: Range out of order in character class 

从阅读另一个类似的问题,我注意到我需要双重逃避一些角色,但我不知道哪个从我的模式。

从正则表达式模式中删除不需要的双引号:

  var pattern = /(?:https?:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]*)/; 

在JavaScript String中,所有反斜杠都应替换为双反斜杠

 var pattern = "/(?:https?:\\/\\/)?(?:www\\.)?facebook\\.com\\/(?:(?:\\w)*#!\\/)?(?:pages\\/)?(?:[\\w\\-]*\\/)*([\\w\\-\\.]*)/"; 

如果它只是从urlhttp://www.facebook.com/xyz获取xyz部分

为什么不使用拆分呢?

这样的事情

 var str = "http://www.facebook.com/xyz"; var res = str.split('/').pop(); console.log(res);