无效的正则表达式:无法重复Safari控制台错误

Ari*_*ina 0 javascript jquery

因此,我有一个可以在其他浏览器上正常工作的代码,但不适用于iPhone和Safari浏览器。当我调试时,以下代码显示“无效的正则表达式:无需重复”。

  function getURLParameter(a) {
    a = (new RegExp("[?|&]" + a + "=([^&;]+?)(&|#|;|$)")).exec(location.search);
    if (null == a) return null;
    a = a[1];
    a = a.replace(/+/g, "%20");
    return decodeURIComponent(a)
}
Run Code Online (Sandbox Code Playgroud)

您能提供的任何帮助将不胜感激。

Sou*_*Sou 5

您的问题来自a = a.replace(/+/g, "%20");+意思是重复一个或多次字符,但是前面没有字符,如果要将“ +”替换为“%20”,则可以简单地调用a.replace("+", "%20")或进行正则表达式a.replace(/\+/g, "%20")

抱歉,a.replace("+", "%20")仅替换第一个“ +”,因此您需要a.replace(/\+/g, "%20")将所有“ +”替换为“%20”

  • 这是对的; 详细地说,“ +”字符在正则表达式中具有特殊含义。要将其视为字符“ +”,需要使用反斜杠“ \ +”对其进行转义。这就是正则表达式变为`/ \ + / g`的原因。 (3认同)