我需要一個正則運算式來組合數字和大寫字母,也許還有小寫字母和/,-字符,其中至少包含 4 個字符。
但當然它應該包含至少 2 個大寫字母或一個數字。
我試過這個:
barcode_regex = r"(?=(?:. [A-Z]))(?=(?:. [0-9]))([a-zA-Z0-9/-]{4,})"
例如匹配如下情況:
ametFXUT0
G197-6STK
adipiscXWWFHH
A654/9023847
HYJ/54GFJ
hgdy67h
uj5u.com熱心網友回復:
您可以使用單個前瞻來斷言至少 4 個字符,并且匹配允許范圍內的單個數字或 2 個大寫字符。
^(?=.{4})(?:[A-Za-z/,-]*\d|(?:[a-z\d/,-]*[A-Z]){2})[A-Za-z\d/,-]*$
解釋
^字串的開始(?=.{4})斷言 4 個字符(?:非捕獲組[A-Za-z/,-]*\d匹配可選的不帶數字的允許字符,然后匹配一個數字|或者(?:[a-z\d/,-]*[A-Z]){2}匹配 2 次不帶大寫字符的可選允許字符,然后匹配大寫字符
)關閉非捕獲組[A-Za-z\d/,-]*匹配可選的允許字符$字串結束
查看正則運算式演示。
uj5u.com熱心網友回復:
您可以通過交替組合使用兩個前瞻來檢查 2 個大寫字母或 1 個數字:
^(?:(?=.*[A-Z].*[A-Z])|(?=.*\d))[A-Za-z0-9/-] $
演示
這個正則運算式模式說:
^
(?:
(?=.*[A-Z].*[A-Z]) assert that 2 or more uppercase are present
| OR
(?=.*\d) assert that at least one digit is present
)
[A-Za-z0-9/-] match any alphanumeric content (plus forward slash or dash)
$
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/468599.html
標籤:正则表达式
