这是我的模式:
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
从另一个类似问题的阅读中我注意到我需要双重逃避一些角色,但我不知道哪种角色来自我的模式。
答案 0 :(得分:5)
从正则表达式模式中删除不需要的双引号:
var pattern = /(?:https?:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-\.]*)/;
答案 1 :(得分:0)
在JavaScript字符串中,所有反斜杠都应替换为双反斜杠
var pattern = "/(?:https?:\\/\\/)?(?:www\\.)?facebook\\.com\\/(?:(?:\\w)*#!\\/)?(?:pages\\/)?(?:[\\w\\-]*\\/)*([\\w\\-\\.]*)/";
答案 2 :(得分:0)
如果它只是从网址xyz
http://www.facebook.com/xyz
部分
为什么不使用拆分?
类似这样的事情
var str = "http://www.facebook.com/xyz";
var res = str.split('/').pop();
console.log(res);