带有x转义序列的JS正则表达式在Firefox中不起作用

JS regex with x escape sequence not working in Firefox

本文关键字:Firefox 不起作用 正则表达式 JS 转义序列 带有      更新时间:2023-09-26

我有这个函数,它应该替换URL中的?paging={something}&paging={something}

下面的正则表达式适用于任何地方,但不适用于Firefox,有什么问题吗?

function myPagination(){
    var url = window.location.href.replace(/'?paging=(.+?)'x/, "");
    console.log(url);
    url = url.replace(/'&paging=(.+?)'x/, "");
    console.log(url);
    return url + addPaging();
}

这肯定是人为错误,因为'x是一个未知的转义序列,后面没有十六进制数字。

看看Mathias Bynens的JavaScript字符转义序列参考:

没有特殊含义的字符也可以转义(例如''a' == 'a'),但这当然不是必需的。但是,在Unicode转义序列之外使用'u或在十六进制转义之外使用'x是规范所禁止的,并且会导致某些引擎抛出语法错误

规范中只提到:

HexEscapeSequence::
x六进制数字六进制数字

因此,如果您计划匹配x,只需使用x,而不使用前面的'

编写正则表达式时的经验法则永远不要使用模棱两可的模式