簡體   English   中英

正則表達式:匹配兩個條件之一?

[英]Regular expression : match either of two conditions?

嗨,我對正則表達式了解不多。 但是我需要使用angularJs進行表單驗證。

以下是要求

輸入框應僅接受以下任一情況

(1)前2個字母的字母+ 6個數字

要么

(2)8個數字

以下是一些正確的輸入:-

(1)SH123456(2)12345678(3)SD456565

我嘗試了data-ng-pattern="/(^([a-zA-Z]){2}([0-9]){6})|([0-9]*)?$/" ,它的對於上述兩種情況都可以正常工作,但仍可以接受S2D3E4F5之類的字符串,並且可能還有許多其他組合。

我做錯了我無法找到答案。

任何幫助都是可觀的!

謝謝

在您的正則表達式中,兩個替代分支分別錨定:

  • (^([a-zA-Z]){2}([0-9]){6}) -字符串開頭的2個字母和6個數字
  • | - 要么
  • ([0-9]*)?$ -字符串末尾的可選零個或多個數字

您需要調整組的邊界:

data-ng-pattern="/^([a-zA-Z]{2}[0-9]{6}|[0-9]{8})?$/"
                   ^                         ^^^^ 

參見regex演示

現在,模式將匹配:

  • ^ -字符串開頭
  • ( -分組開始:
    • [a-zA-Z]{2}[0-9]{6} -2個字母和6位數字
    • | - 要么
    • [0-9]{8} -8位數字
  • )? -分組結束? 量詞使其匹配1或0次(可選)
  • $ -字符串結尾。

您可以在此處嘗試此演示鏈接

^(([a-zA-Z]{2}|[0-9]{2})[0-9]{6})?$

它將接受:

  1. AB123456
  2. 12345678
  3. aa441236
  4. aw222222

暫無
暫無

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

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