簡體   English   中英

如何使用正則表達式在望頭中給出范圍,例如^(?=(。* [az]){1,3})(?=。* [0-9])。{2,5} $

[英]How to give range in lookhead using regex e.g ^(?=(.*[a-z]){1,3})(?=.*[0-9]).{2,5}$

Question-
1]String length is 2 to 5 
2]String contains at least 1 char and maximum 3 char
3]Atleast one number 

我想使用回頭針。 我嘗試但不起作用的內容^(?=(。 [az]){1,3})(?=。 [0-9])。{2,5} $

嘗試使用以下正則表達式

(?=([\\\\w\\\\W]{2,5}$))(?=(.*([0-9]){1,}.*))^[^A-Za-z]*[A-Za-z](?!(?:[^A-Za-z]*[A-Za-z]){3})

public static void main(String[] args) {
    String regex = "(?=([\\w\\W]{2,5}$))(?=(.*([0-9]){1,}.*))^[^A-Za-z]*[A-Za-z](?!(?:[^A-Za-z]*[A-Za-z]){3}).*";

    Pattern pattern = Pattern.compile(regex);
    System.out.println(pattern.matcher("AB2").find()); // output true
    System.out.println(pattern.matcher("AB2C").find()); // output true
}

您可以使用積極的前瞻來斷言字符串的長度為2-5個字符,並且至少有1位數字和1個字符[az] 為了確保最多可以包含3個字符,可以使用負數前瞻來斷言您沒有匹配4個字符。

^(?=[a-z0-9]{2,5}$)(?=.*[az])(?=.*[0-9])(?!(?:.*[az]){4})[a-z0-9]+$

正則表達式演示

說明

  • ^斷言行首
  • (?=[a-z0-9]{2,5}$肯定表示2個-5個字符的前瞻
  • (?=.*[az])正向前進以斷言1個字符
  • (?=.*[0-9])正向肯定表示1位數字
  • (?!(?:.*[az]){4})負向超前不匹配一個字符4次
  • [a-z0-9]+$一次或多次匹配字符或數字,直到字符串結尾

演示

暫無
暫無

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

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