Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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
Javascript 使用&&;字符类中的运算符_Javascript_Ruby_Regex - Fatal编程技术网

Javascript 使用&&;字符类中的运算符

Javascript 使用&&;字符类中的运算符,javascript,ruby,regex,Javascript,Ruby,Regex,类似的东西在Ruby中工作,但在Javascript中不起作用: str = "now is the time" p str.gsub(/[a-z&&[^aeiou]]/, '*') 注意第二行的& [a-z&[^aeiou]]有效,但是如果您删除整个正则表达式周围的[],并使用a-z&[^aeiou]则无效。为什么?这是Ruby独有的吗?我找不到有关此功能的更多信息 一个字符类可能包含另一个字符类。这本身并不有用,因为[a-z[0-9]]描述了与[a-z0-9]相同的集合。但

类似的东西在Ruby中工作,但在Javascript中不起作用:

str = "now is the time"
p str.gsub(/[a-z&&[^aeiou]]/, '*')
注意第二行的
&

[a-z&[^aeiou]]
有效,但是如果您删除整个正则表达式周围的
[]
,并使用
a-z&[^aeiou]
则无效。为什么?这是Ruby独有的吗?我找不到有关此功能的更多信息

一个字符类可能包含另一个字符类。这本身并不有用,因为
[a-z[0-9]]
描述了与
[a-z0-9]
相同的集合。但是,字符类还支持
&
操作符,该操作符对其参数执行集合交集。这两者可以按如下方式组合:

/[a-w&&[^c-g]z]/ # ([a-w] AND ([^c-g] OR z))
这相当于:

/[abh-w]/


此运算符在Javascript中确实不可用。

在正则表达式中
&&
是字符类交集的运算符。Ruby的正则表达式引擎被称为,这里是从文档中摘录的一部分(重点添加):

字符类

^。。。负类(最低优先级运算符)
x-y范围从x到y
[…]集(字符类中的字符类)
。&&。。交叉点(下一个^的优先级较低)


至于为什么它不能在JS中工作,我不知道,可能是因为这个引擎没有实现这个操作符。以Java为例,它可以工作。

这看起来像是一个关于JavaScript而不是Ruby的问题,但被标记为Ruby。嗯,包含的代码是Ruby,所以我不认为有理由排除“Ruby”标记。我在上面写评论时,它甚至没有被标记为JavaScript。