javascript regex对花括号的处理在所有现代浏览器中都是相同的

Is handling of curly braces in javascript regex is the same across all modern browsers?

本文关键字:浏览器 对花 regex 处理 javascript      更新时间:2023-09-26

JavaScript regex中的花括号用于表示量词。所以写

a{2,4}

将匹配aa, aaa和aaaa。但是如果你像这样输入错误的量词:

x{1,x}

它将匹配字面文本"x{1,x}",至少在Firefox中是这样。

这种行为在现代浏览器中常见吗?

ECMA标准禁止这种行为,并要求对大括号进行转义。

(背景:我必须在工作中为javascript正则表达式编写解析器。)

我不知道JavaScript和浏览器,但这是我所期望的行为,我过去在正则表达式中看到过。

所以我测试了不同的正则表达式引擎的行为:
  • c# :这样的行为

  • Perl
  • :这样的行为

  • Python
  • :这样的行为

  • PHP
  • :这样的行为

  • Java :将抛出一个异常