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

时间:2015-11-04 15:02:20

标签: javascript regex

我有这个功能应该从网址中替换?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();
}

1 个答案:

答案 0 :(得分:4)

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

查看Mathias Bynens' JavaScript character escape sequences reference

  

也可以转义没有特殊含义的字符(例如'\a' == 'a'),但这当然不需要。但是,在Unicode转义序列之外使用\u,或hexadecimal escape之外的\xdisallowed by the specification ,而会导致某些引擎抛出语法错误

specification仅提到:

  

HexEscapeSequence ::
  x HexDigit HexDigit

因此,如果您计划匹配x,只需使用x,而不要使用\

撰写正则表达式时的经验法则绝不使用含糊不清的模式