![](/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.