簡體   English   中英

使用正則表達式驗證以下要求?

[英]Using Regular Expression to validate the following requirement?

我正在嘗試驗證一個由“-”、“:”、“/”分隔的 5 位數字的 15 位數字,它應該以 5、4 或 37 開頭,它也不應該包含任何字符。

它的意思是

37344-37747-27744 - 有效
40344-37747-27744 - 有效
59344-37747-27744 - 有效
37344:37747:27744 - 有效
37344/37747/27744 - 有效
87887-98734-83422 - 無效
548aa:aa764:90887 - 無效
37759\29938\92093 - 無效

到目前為止,我只能撥打 go


\d{5}[-:\/]\d{5}[-:\/]\d{5}

請幫忙。

試試這個:

(((5|4)\d{4})|((37)\d{3}))[-:\/]\d{5}[-:\/]\d{5}

https://regex101.com/r/VvTq5P/1

編輯:

我還要添加: \b在開頭和結尾:

\b(((5|4)\d{4})|((37)\d{3}))[-:\/]\d{5}[-:\/]\d{5}\b

所以沒有像:

12337344-37747-27744

可以通過測試。

您可以使用 look ahead (?=.)首先檢查您的字符串是否以數字5|4|37 ^ ,這是要求,這里是完整模式:

^(?=5|4|37)\d{5}[-:\/]\d{5}[-:\/]\d{5}$

在這里演示

如果我理解正確,正則表達式是這樣的:

((5|4)\d{4}|37\d{3})[-:\/]\d{5}[-:\/]\d{5}

需要是

4XXXX、5XXXX 或 37XXX

所以我把它分開接受 3 forms

((5|4)\d{4}|37\d{3})[-:\/]\d{5}[-:\/]\d{5}

(5|4)\d{4} - 查找以 5 或 4 開頭和后面的四位數字的數字。

然后 or 37\d{3} 查找 37 和后面的三位數字。

如果分隔符必須相同:

^(?=37|[54])\d{5}([-:\/])\d{5}\1\d{5}$

解釋

  • ^字符串開始
  • (?=37|[54])正面前瞻,向右斷言3754
  • \d{5}匹配5個數字
  • ([-:\/])捕獲組 1 ,匹配其中之一- : /
  • \d{5}匹配5個數字
  • \1反向引用以匹配與組 1 中相同的分隔符
  • \d{5}匹配5個數字
  • $字符串結尾

請參閱regex101 演示

 const regex = /^(?=37|[54])\d{5}([-:\/])\d{5}\1\d{5}$/; [ "37344-37747-27744", "40344-37747-27744", "59344-37747-27744", "37344:37747:27744", "37344/37747/27744", "87887-98734-83422", "548aa:aa764:90887", "37759\\29938\\92093", "37344-37747/27744", "37344:37747-27744" ].forEach(s => console.log(`${s} --> ${regex.test(s)}`) )

沒有使用交替環視的模式:

^(?:37\d{3}|[54]\d{4})([-:\/])\d{5}\1\d{5}$

查看regex101 演示

 const regex = /^(?:37\d{3}|[54]\d{4})([-:\/])\d{5}\1\d{5}$/; [ "37344-37747-27744", "40344-37747-27744", "59344-37747-27744", "37344:37747:27744", "37344/37747/27744", "87887-98734-83422", "548aa:aa764:90887", "37759\\29938\\92093", "37344-37747/27744", "37344:37747-27744" ].forEach(s => console.log(`${s} --> ${regex.test(s)}`) )

暫無
暫無

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

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