Ruby 1.9和Javascript regexp之间的差异

时间:2012-01-09 03:49:55

标签: javascript ruby regex

除了Javascript的^$等同于Ruby的\A\z之外,两个正则表达式引擎之间还存在哪些细微差别?

我正在寻找相同的正则表达式可能表现不同的细微差别,例如/^abc$/将在Ruby中匹配:

123
abc
def

但它在Javascript中不匹配。

1 个答案:

答案 0 :(得分:17)

Ruby支持的功能,但不支持JavaScript:

  • \a(铃)
  • \e(逃脱)
  • \A(字符串的开头)
  • \Z(字符串结尾,最后换行符之前)
  • \z(字符串结尾)
  • 转发参考\1\9
  • 对失败组的反向引用也会失败
  • (?>regex)(原子组)
  • \G(比赛尝试开始)
  • (?#comment)
  • 支持自由间距语法
  • 字符类是单个标记
  • #发表评论
  • [:alpha:] POSIX字符类
  • (?i)(不区分大小写)(JavaScript仅支持/i
  • (?s)(点与换行符匹配)(?m)
  • (?m)^$在换行符匹配)(/m仅限JavaScript)
  • (?x)(自由间隔模式)
  • (?-ismxn)(关闭模式修饰符)
  • (?ismxn:group)(本地模式修改器)

JavaScript支持的功能,但不支持Ruby:

  • \cA\cZ(控制角色)
  • \ca\cz(控制角色)
  • \u0000\uFFFF(Unicode字符)

来源: