为什么这个正则表达式执行不 return 匹配
Why does this regex execution not return the match
我的正则表达式是:
let a = new RegExp("(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![A-z]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?", "g")
这基本上是对 facebook here 从 facebook url.
中提取用户名的修改
我的测试字符串是https://facebook.com/peterparker
,我的代码是:
a.exec("https://facebook.com/peterparker")
当我在 RegExr 中尝试这个时,它工作正常。它显示捕获的正确组 (peterparker
)。
然而,当我在 Google Chrome 的控制台中尝试相同的代码时,代码 returns null:
为什么它不显示在 chrome 控制台中?
由于您是从字符串创建正则表达式,因此必须转义反斜杠。
let a = new RegExp("(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![A-z]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?", "g")
console.log(a.exec("https://facebook.com/peterparker"))
内联创建没有这个问题。
let a = /(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![A-z]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?/g
console.log(a.exec("https://facebook.com/peterparker"))
我的正则表达式是:
let a = new RegExp("(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![A-z]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?", "g")
这基本上是对 facebook here 从 facebook url.
中提取用户名的修改我的测试字符串是https://facebook.com/peterparker
,我的代码是:
a.exec("https://facebook.com/peterparker")
当我在 RegExr 中尝试这个时,它工作正常。它显示捕获的正确组 (peterparker
)。
然而,当我在 Google Chrome 的控制台中尝试相同的代码时,代码 returns null:
为什么它不显示在 chrome 控制台中?
由于您是从字符串创建正则表达式,因此必须转义反斜杠。
let a = new RegExp("(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![A-z]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?", "g")
console.log(a.exec("https://facebook.com/peterparker"))
内联创建没有这个问题。
let a = /(?:https?:)?\/\/(?:www\.)?(?:facebook|fb)\.com\/(?<profile>(?![A-z]+\.php)(?!marketplace|gaming|watch|me|messages|help|search|groups)[\w.\-]+)\/?/g
console.log(a.exec("https://facebook.com/peterparker"))