RegExp范围无序,复杂模式

Kid*_*ond 1 javascript regex jquery

这是我的模式:

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

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

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

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

Vic*_*ves 5

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

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

  • 另外,那么你不再需要`new RegExp(pattern)`了; 只需使用`pattern`. (2认同)