【问题标题】:Regex works on chrome but returns invalid error on safari正则表达式适用于 chrome,但在 safari 上返回无效错误
【发布时间】:2023-04-06 20:50:01
【问题描述】:

text = document.getElementById("p01").innerHTML; 
document.getElementById("demo").innerHTML = /(?<=api-)(.*)-us(.*)/.test('api-stg-usw2b');
<h2>JavaScript Regular Expressions</h2>

<p>Search for an "e" in the next paragraph:</p>

<p id="p01">The best things in life are free!</p>

<p id="demo"></p>

这个正则表达式在 chrome 上工作,但在 safari 上失败......我试图用 : 替换

这是我看到的错误: SyntaxError: Invalid regular expression: invalid group specifier name

不确定如何解决?我必须使用的正则表达式备忘单是什么?

【问题讨论】:

  • 您是否只对使用.test 感兴趣?然后只需删除?&lt;= 部分,所以它以/(api-) 开头。无需使用look behind;抓住它。顺便说一句:您周围的所有代码似乎都不相关。为什么会出现在问题中?
  • 我有 webapp 这样做,为了使它更短和可执行,我很快就做了这个

标签: javascript html regex


【解决方案1】:

第一个捕获组无效(在 Firefox 上也不起作用);正则表达式的 javscript 风格不支持 (?&lt;=.. 背后的正面看法;及其依赖于浏览器的实现;查看此SO answer 以进一步阅读;所以尝试使用更广泛支持的“模式”而不是/(?&lt;=api-)(.*)-us(.*)/;它绝对可以写得更简单,而不用正面看;我还建议在regexr 或regex101 等在线正则表达式操场上尝试您的模式...

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多