类似这样的东西在 Ruby 中有效,但在 Javascript 中无效:
str = "now is the time"
p str.gsub(/[a-z&&[^aeiou]]/, '*')
注意第二行的&&
。
[a-z&&[^aeiou]]
有效,但如果您删除整个正则表达式周围的 []
并具有 a-z&&[^aeiou]
它不会工作。为什么?这仅是 Ruby 独有的吗?我找不到关于此功能的太多信息。
最佳答案
在正则表达式中,&&
是字符类交集的运算符。 Ruby 的正则表达式引擎称为 Oniguruma ,这里是文档的摘录(添加了重点):
Character class
^... negative class (lowest precedence operator)
x-y range from x to y
[...] set (character class in character class)
..&&.. intersection (low precedence at the next of ^)
至于为什么它在 JS 中不起作用我不知道,可能是因为有问题的引擎没有实现这个运算符。例如,在 Java 中它可以工作。
关于javascript - 在字符类中使用 && 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825611/