簡體   English   中英

檢查具有多個長度模式的字符串

[英]check string with multiple length patterns

我需要使用正則表達式檢查字符串。

有效的字符串例如: ABC0001A00023

我必須檢查三個部分:

  1. 因此,字符串應以單詞符號開頭: [a-zA-Z]{1,}
  2. 然后有一個最小的零: [0]{1,}
  3. 第三部分是一個數字\\\\d+

整個字符串不得超過8個符號。

到目前為止我嘗試過的是:

String NR_PATTERN = "^([a-zA-Z]{1,}[0]{1,}\\d+){3,8}$";

問題是,正則表達式不接受字符串: KDS0234

您可以在開始時嘗試進行積極的前瞻:

(?=^.{3,8}$)([a-zA-Z]{1,}[0]{1,}\\d+)

積極的前瞻性:

(?=^.{3,8}$)

會向前看?=並確認從字符串的開始^到結尾$ ,是否有與匹配的字符. 在3至8次之間{3,8}

(…){3,8}表示您想…序列在3到8次之間重復,而不是字符串是8個字符

您可以只使用(知道您說過需要正則表達式,但這也許對您有用)

String NR_PATTERN = "[a-zA-Z]+0+\\d+";
String s = "ABC0001";
boolean match  = s.length() < 8 &&  s.matches(NR_PATTERN);

您可以先行檢查長度條件,然后匹配您的圖案:

\b(?=[a-zA-Z0-9]{3,8})([A-Za-z]+0[0-9]+)\b

您可以申請:

\b(?=[A-Z]+0+\d+)\w{3,8}\b

請參閱regex101.com上的演示 ,在Java使用雙反斜杠。


這將匹配:

B123456 or 0001B

但不是

 B123456 or 0001B 
(?=^.{3,8}$)([a-zA-Z]+[0]+\d+)

希望這個幫助

暫無
暫無

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

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