我需要一個正則表達式來滿足這兩個條件。java - 如何測試一個字符串是否包含字母和數字
只有當字符串同時包含A-Z和0-9時,纔會給出我的答案。
這是我已經試過:
if PNo[0].matches("^[A-Z0-9]+$")
它不工作。
我需要一個正則表達式來滿足這兩個條件。java - 如何測試一個字符串是否包含字母和數字
只有當字符串同時包含A-Z和0-9時,纔會給出我的答案。
這是我已經試過:
if PNo[0].matches("^[A-Z0-9]+$")
它不工作。
我懷疑,下面的正則表達式是由環視放緩,但無論它應該工作:
.matches("^(?=.*[A-Z])(?=.*[0-9])[A-Z0-9]+$")
正則表達式斷言,有一個大寫字母字符(?=.*[A-Z])
某個字符串中,並斷言在字符串的某個位置有一個數字(?=.*[0-9])
,然後檢查是否所有內容都是字母字符或數字。
我試過你,它的工作......謝謝.. – Lucky 2012-07-18 02:49:18
信可之前或之後的數字,所以這個表達式應該工作:
(([A-Z].*[0-9])|([0-9].*[A-Z]))
下面是一個使用這種表達的代碼示例:
Pattern p = Pattern.compile("(([A-Z].*[0-9])|([0-9].*[A-Z]))");
Matcher m = p.matcher("AXD123");
boolean b = m.find();
System.out.println(b);
什麼([A-Z].*[0-9]+)|([0-9].*[A-Z]+)
?
這應該解決您的問題:
^([A-Z]+[0-9][A-Z0-9]*)|([0-9]+[A-Z][A-Z0-9]*)$
但它是不可讀。我建議先用「^ [A-Z0-9] + $」檢查輸入,然後用「[AZ]」檢查以確保它至少包含一個字母,然後檢查「[0-9]」以確保它包含至少一個數字。這樣您可以輕鬆添加新限制,並且代碼仍然可讀。
這應該是正確的答案。 – nhahtdh 2012-07-18 02:50:36
它更容易編寫和閱讀,如果您使用兩個單獨的正則表達式:
String s = "blah-FOO-test-1-2-3";
String numRegex = ".*[0-9].*";
String alphaRegex = ".*[A-Z].*";
if (s.matches(numRegex) && s.matches(alphaRegex)) {
System.out.println("Valid: " + input);
}
更重要的是,寫一個方法:
public boolean isValid(String s) {
String n = ".*[0-9].*";
String a = ".*[A-Z].*";
return s.matches(n) && s.matches(a);
}
基本說明:
匹配在字符串的當前行:.
匹配0或任何字符的任何量:*
匹配任何在當前行:.*
匹配集合中的(任何字符範圍)字符:[start-end]
匹配從一組正則表達式中的一個:(regex1|regex2|regex3)
請注意,開始和結束來自ASCII順序,並且開始必須在結束之前。例如,您可以執行[0-Z]
,但不能執行[Z-0]
。這是給你參考
檢查ASCII表對正則表達式的字符串
直接讓yourString.matches(theRegexAsString)
檢查字符串包含字母:
檢查是否有信:yourString.matches(".*[a-zA-Z].*")
Chec k如果有一個較低的套管信:yourString.matches(".*[a-z].*")
檢查,如果有一個上套管信:yourString.matches(".*[A-Z].*")
檢查字符串中包含的數字:
yourString.matches(".*[0-9].*")
檢查字符串包含數字和字母:
最簡單的方法是用字母和數字
yourString.matches(".*[a-zA-Z].*") && yourString.matches(".*[0-9].*")
匹配兩次,如果你喜歡的所有匹配在一起的一切,正則表達式將是這樣的:匹配其在某個地方有一個字符的字符串,然後有一些事後的任何位置,或其他方式。所以,你的正則表達式是:
yourString.matches(".*([a-zA-Z].*[0-9]|[0-9].*[a-zA-Z]).*")
檢查字符串恆星信
yourString.matches("[a-zA-Z].*")
檢查字符串結尾號碼
yourString.matches(".*[0-9]")
我沒有看到任何需要構建一個正則表達式來完成這兩個匹配。這會更快(更容易閱讀),兩次調用String.matches(),兩次調用AND(見我的答案)。 – jahroy 2012-07-18 02:44:27