Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 1.9和Javascript regexp之间的差异_Javascript_Ruby_Regex - Fatal编程技术网

Ruby 1.9和Javascript regexp之间的差异

Ruby 1.9和Javascript regexp之间的差异,javascript,ruby,regex,Javascript,Ruby,Regex,除了Javascript的^和$等同于Ruby的\A和\z,这两个正则表达式引擎之间还有什么细微的区别 我在寻找相同正则表达式可能表现不同的细微差异,例如,/^abc$/将在Ruby中匹配这一点: 123 abc def 但它在Javascript中不匹配。Ruby支持但不支持Javascript的功能: \a(贝尔) \e(转义) \A(字符串开头) \Z(字符串末尾,最后一行中断之前) \z(字符串末尾) 通过\9 对失败组的反向引用也会失败 (?>regex)(原子组) \G(开始匹配

除了Javascript的
^
$
等同于Ruby的
\A
\z
,这两个正则表达式引擎之间还有什么细微的区别

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

123
abc
def

但它在Javascript中不匹配。

Ruby支持但不支持Javascript的功能:

  • \a
    (贝尔)
  • \e
    (转义)
  • \A
    (字符串开头)
  • \Z
    (字符串末尾,最后一行中断之前)
  • \z
    (字符串末尾)
  • 通过
    \9
  • 对失败组的反向引用也会失败
  • (?>regex)
    (原子组)
  • \G
    (开始匹配尝试)
  • (?#注释)
  • 支持自由间距语法
  • 字符类是单个标记
  • #
    开始评论
  • [:alpha::
    POSIX字符类
  • (?i)
    (不区分大小写)(JavaScript仅支持
    /i
  • (?s)
    (点匹配换行符)(?m)
  • (?m)
    ^
    $
    在换行符处匹配)(
    /m
    仅在JavaScript中)
  • (?x)
    (自由间距模式)
  • (?-ismxn)
    (关闭模式修改器)
  • (?ismxn:组)
    (组本地模式修改器)
JavaScript支持但Ruby不支持的功能:

  • \cA
    \cZ
    (控制字符)
  • \ca
    \cz
    (控制字符)
  • \u0000
    \uFFFF
    (Unicode字符)
资料来源:


特定版本的Ruby之间也存在差异。Ruby 1.8不支持look-behind断言,而Ruby 1.9支持。tybro0103 Oops应该指定哪个版本。不确定该页面的最新程度,但在Ruby 1.9中,正则表达式引擎支持
\uxxx
序列。从Ruby v2.2开始,还有一些Ruby正则表达式功能在JS中不可用:(?(a)b | c)条件句\p{sc}unicode属性;++所有格量词;[a[^b]]设置嵌套;[a-x&&c-z]设置交点\h六角型\k反向参考\g子表达式调用;(?