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



我有这个函数,它应该替换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,而不使用前面的

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

最新更新