簡體   English   中英

如何在正則表達式中正確使用“或”運算符?

[英]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*$/

代替。

請注意,這兩個正則表達式都只會匹配aabbbbbb等字符串,而不會匹配aba 如果要允許在字符串中使用混合的a / b字符,則需要類似

/^(?:a|b)*$/

您的示例中的OR將在以下替代方式中拆分表達式: ^a*b*$

您可以使用組來定界替代方案

就像是

/^(a*|b*)$/

這將匹配空字符串,只包含字符串a字符,並且只包含字符串的b字符。

如果要匹配包含ab字符的字符串,則可以使用類似以下內容的方法:

/^[ab]*$/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM