Ruby 1.9和Javascript regexp之间的差异

ano*_*ard 9 javascript ruby regex

除了JavaScript的^,并$等同于Ruby的\A\z,还有什么其他细微的差别是有两个正则表达式引擎之间?

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

123
abc
def
Run Code Online (Sandbox Code Playgroud)

但它在Javascript中不匹配.

Way*_*ett 17

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

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

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

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

资源:

  • 不确定该页面是最新的,但在ruby 1.9中,正则表达式引擎支持`\ uXXXX`序列. (2认同)