Ruby 1.9和Javascript regexp之间的差异

除了Javascript的^$相当于Ruby的\A\z ,两个正则表达式引擎之间还有哪些细微差别?

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

 123 abc def 

但它在Javascript中不匹配。

Ruby支持的function,但不支持JavaScript:

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

JavaScript支持的function,但不支持Ruby:

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

资源: