RegExp为匹配项提供“null”-在regex101.com中工作 [重复]

xqkwcwgp  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(115)

此问题已在此处有答案

Backslashes - Regular Expression - Javascript(2个答案)
11天前关闭
我有一个简单的正则表达式来匹配当前导航器url的各个部分。
它应该找到URL的一些特定部分,这些部分将采用以下格式:
https://localhost:9443/client/#chart/680

https://localhost:9443/client/#chart/680/123
当我在RegEx 101上测试它时,它工作正常
https://regex101.com/r/ByBgMO/1
但是,当它实现时,它返回null的匹配,为什么?
下面是代码:

// pull out the sections [https://...../ | #chart/123 | [/123]]
const urlRegEx = new RegExp("^(.+\/)(#chart\/\d+)(\/\d+)?", "ig");

const url = document.location.href.split("^")[0];
// url = https://localhost:9443/client/#chart/680

const matches = urlRegEx.exec(url);
// matches = null

console.log("Chart.loadChartConfig().urlMatches: ", { url: url, matches: matches });

供参考:document.location.href.split("^")[0]是因为url * 可能 * 有只用于显示的部分,这些部分由^预先定义-我不关心这些。
编辑:这个问题已经被标记为已经回答,我想它已经-但我不知道这个问题是相同的,所以离开它的地方。

qacovj5a

qacovj5a1#

\在JavaScript字符串中有特殊的含义,所以你需要转义那些字面上的意思:

const urlRegEx = new RegExp("^(.+\\/)(#chart\\/\\d+)(\\/\\d+)?", "ig");

const url = 'https://localhost:9443/client/#chart/680';

const matches = urlRegEx.exec(url);

console.log("Chart.loadChartConfig().urlMatches: ", { url: url, matches: matches });

相关问题