正则表达式逻辑和或

Ale*_*der 31 javascript regex

我知道有逻辑运算符,如|"OR运算符",可以像这样使用:

earth|world
Run Code Online (Sandbox Code Playgroud)

我想知道如何检查我的字符串是否包含地球和世界.

亚历山大

mar*_*ema 41

如果它包含地球和世界,它包含一个接一个,所以:

earth.*world|world.*earth
Run Code Online (Sandbox Code Playgroud)

一个较短的替代方法(使用扩展的正则表达式语法)将是:

/(?=.*earth)(?=.*world).*/
Run Code Online (Sandbox Code Playgroud)

但它根本不像and运营商.您只能这样做,or因为如果只包含其中一个单词,则不会涉及排序.如果您想同时使用它们,则需要指明订单.

  • 我不会将第二个版本称为hackish - 相反,特别是如果涉及两个以上的条件,我发现顺序前瞻更为直接. (3认同)

iiv*_*vel 5

在这里提出并回答了这个问题:

正则表达式:是否有 AND 运算符?

没有直接的“和”运算符,但您可以继续表达式测试并确保第二个表达式也匹配。


Wal*_*alf 5

做两个测试,如果第一个失败,第二个不会在 javascript 中执行。例如

var hasBoth = /earth/i.test(aString) && /world/i.test(aString);
Run Code Online (Sandbox Code Playgroud)

  • 并不总是方便,很高兴知道如何使用一个正则表达式来做到这一点 (4认同)