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字符)
资源: