![](/img/trans.png)
[英]How to use mongo '$or' operator with regex with 2 different keys?
[英]How to use 'or' operator in regex properly?
我正在尝试使用Javascript的正则表达式。
据我所知,' |
'用于对两个正则表达式进行“或”运算。
我创建了一个正则表达式/^a*|b*$/
,我希望它可以检测到仅包含'a'或'b'字符的任何字符串。
但是当我尝试/^a*|b*$/.test('c')
,它会产生true
吗?
我缺少的' |
运算符?
这是我的代码:
let reg = /^a*|b*$/;
< undefined
reg.test('c');
< true
|
优先级非常低。 ^a*|b*$
符合
^a*
b*$
例如,以0或多个'a'开头的字符串或以0或多个'b'结尾的字符串。 (因为正则表达式允许匹配0'a,所以任何字符串都将匹配(因为每个字符串都有一个开始)。)
为了在两侧正确地固定比赛,您需要
/^(?:a*|b*)$/
(在(?:
构建体是非捕获组)。 )
您也可以使用
/^a*$|^b*$/
代替。
请注意,这两个正则表达式都只会匹配aa
, bbbbbb
等字符串,而不会匹配aba
。 如果要允许在字符串中使用混合的a / b字符,则需要类似
/^(?:a|b)*$/
您的示例中的OR将在以下替代方式中拆分表达式: ^a*
和b*$
。
您可以使用组来定界替代方案
就像是
/^(a*|b*)$/
这将匹配空字符串,只包含字符串a
字符,并且只包含字符串的b
字符。
如果要匹配包含a
和b
字符的字符串,则可以使用类似以下内容的方法:
/^[ab]*$/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.