我需要實作一個涵蓋多個要求的正則運算式。這些是:
- 應將長度限制為最多 8 個字符(帶或不帶通配符)。無論如何,代碼永遠不會超過 8 個字符。
- 當通配符也低于 8 位時是允許的。沒有通配符,正好需要 8 位數字。
- 允許的字符是:0-9A-Za-z *(所有數字、所有字符、星號作為通配符)
- 純通配符必須是可能的
- 否則前兩位數字必須包含 2 個字符的國家/地區代碼(字母數字),然后只允許使用數字或通配符。
- 國家/地區代碼后通配符可以在任何地方使用(中間,末尾,多個星號/通配符也允許)
到目前為止,我嘗試了很多事情,并考慮了 Lookahead/Lookbehind,因為 asterix 和 max。長度。我的最新狀態涵蓋了大部分要求,如下所示:
^([A-Za-z]{2}[0-9*]{0,6}|\*)$
檢查帶有正確/錯誤組合的現場演示
但在這個例子中,沒有星號/通配符的代碼可能少于 8 個字符 -> 這是錯誤的。
非常感謝您提前提供的任何幫助:)
uj5u.com熱心網友回復:
您可以使用
^(?!.*\*\*$)(?!.{9})(?:[A-Za-z]{2}(?:\d*(?:\*\d*) |\d{6})|\*)$
請參閱正則運算式演示。
詳情:
^- 字串的開始(?!.*\*\*$)-**字串末尾不允許有兩個(?!.{9})- 字串必須包含少于 9 個字符(換行符除外)(?:[A-Za-z]{2}(?:\d*(?:\*\d*) |\d{6})|\*)- 兩種選擇之一:[A-Za-z]{2}(?:\d*(?:\*\d*) |\d{6})- 兩個字母,然后是六個數字或零個或多個數字,后跟一個或多個星號序列和零個或多個數字|- 或者\*- 一個星號
$- 字串結束。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475191.html
上一篇:正則運算式匹配未包含在宏中的字串
