【问题标题】:Invalid regular expression error无效的正则表达式错误
【发布时间】:2011-05-10 15:59:48
【问题描述】:


我正在尝试检索这个字符串“property_id=516&category=featured-properties”的类别部分,所以结果应该是“featured-properties”,我想出了一个正则表达式并在这个网站http://gskinner.com/RegExr/上进行了测试,它的工作原理是预期的,但是当我将正则表达式添加到我的 javascript 代码时,出现“无效的正则表达式”错误,谁能告诉我是什么弄乱了这段代码?

谢谢!

var url = "property_id=516&category=featured-properties"
var urlRE = url.match('(?<=(category=))[a-z-]+');
alert(urlRE[0]);

【问题讨论】:

    标签: javascript regex pattern-matching lookbehind


    【解决方案1】:

    不符合 ECMAScript 2018 标准的 JavaScript 环境不支持正向回溯(您的 ?&lt;=),这会导致您的 RegEx 失败。

    你可以用很多不同的方式模仿它们,但这可能是一个更简单的正则表达式来为你完成工作:

    var url = "property_id=516&category=featured-properties"
    var urlRE = url.match(/category=([^&]+)/);
    // urlRE => ["category=featured-properties","featured-properties"]
    // urlRE[1] => "featured-properties"
    

    这是一个超级简单的示例,但如果您需要,在 StackOverflow 中搜索 RegEx 模式来解析 URL 参数将会找到更强大的示例。

    【讨论】:

      【解决方案2】:

      语法弄乱了你的代码。

      var urlRE = url.match(/category=([a-z-]+)/);
      alert(urlRE[1]);
      

      【讨论】:

      • 拼写出来:使用斜杠作为正则表达式的分隔符,而不是引号。
      • 它仍然给我这个错误“Uncaught SyntaxError: Invalid regular expression: /(?
      • 我已更新表达式以使用 javascript。有一些不支持的表达式。
      • 斜线和引号不是问题:后面是。
      【解决方案3】:

      如果要解析网址参数,可以使用本站的getParameterByName()函数:

      无论如何,如前所述,JavaScript 中的正则表达式不是纯字符串:

      【讨论】:

        【解决方案4】:
          var url = "property_id=516&category=featured-properties",
        
          urlRE = url.match(/(category=)([a-z-]+)/i); //don't forget i if you want to match also uppercase letters in category "property_id=516&category=Featured-Properties"
          //urlRE = url.match(/(?<=(category=))[a-z-]+/i); //this is a mess
        
          alert(urlRE[2]); 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-03
          • 2019-01-05
          • 1970-01-01
          • 1970-01-01
          • 2021-06-10
          • 2020-08-11
          • 2011-08-09
          相关资源
          最近更新 更多