簡體   English   中英

使用正則表達式驗證特定字符的字符串和精確長度的數字

[英]Validate a string of certain characters and numeric of exact length using Regex

目標:精確匹配 10 個混合大寫字符(I、O 和空格除外)和 2 到 9 的數字:

確切地說,這是值必須來自的有效集合:

{'2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', ' E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S' , 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}

我試過這個:

^[A-Z2-9][^IO01a-z ]{10}$

但是這 11 個長度會通過:9PAUUH98TYE 而其中 10 個不會通過 9PAUUH98TY

我也試過:

\b[A-Z2-9][^IO01a-z ]{10}\b

所以你可以做一些花哨的負面環視魔術,但實際上,只列出你期望的字母就可以了。

^[ABCDEFGHJKLMNPQRSTUVWXYZ2-9]{10}$

使用跨度,它可以縮短為

^[A-HJ-NP-Z2-9]{10}$

這是 """lazy""" 方法,但它在所有正則表達式風格中的工作方式一致。 例如,在 .Net、JavaScript 和其他中,負面的后視有時可能表現不同。

此外,在您的模式中使用^$非常重要。 它們將有助於確保整個輸入字符串的字符數正確。

您可以使用負前瞻/后視排除您不想要的集合:

\b([A-Z2-9](?<![IO])){10}\b

在這里查看測試用例

這行得通嗎?

\b[A-HJ-NP-Z2-9]{10}\b

演示

暫無
暫無

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

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