[英]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.