【发布时间】:2019-09-27 02:33:23
【问题描述】:
这是输入行"!!!??"
FIRST 正则表达式在 Ruby 和 JS 中的工作方式类似,并执行所需的操作将输入拆分为包含“!”的两行和 ”?”分别:
示例#1 ruby like js /!+|\?+/g
RUBY s.scan(/!+|\?+/).inspect 像 JS s.match(/!+|\?+/g) 一样工作。
输出为:RUBY [ '!!!', '??' ], JS [\"!!!\", \"??\"]
示例#2 ruby 不是 js /([?!])\1*/
这里 ruby 和 js 有不同的行为
RUBY s.scan(/([?!])\1*/) 不等于 JS s.match(/([?!])\1*/g)。
RUBY 返回两个数组[[\"!\"], [\"?\"]]。
JS 返回两个字符串,就像示例 #1 [ '!!!', '??' ] 中一样。
为什么/([?!])\1*/ 在 Ruby 和 JS 中的行为不同?
【问题讨论】:
-
@musefan
match只返回一个匹配项。 -
@WiktorStribiżew:我不知道 ruby,我只是 seen this 并认为它看起来是正确的,但第二次看起来你是正确的
标签: javascript ruby regex