2014-07-05 91 views
1

我想要一個接受爲輸入字符(A..Z或a..z)且不接受數字和特殊字符的正則表達式。 我寫了這個方法,並且這些模式,但它不工作:只接受字符,數字和特殊字符的正則表達式不是

public static Pattern patternString = Pattern.compile("\\D*"); 
public static Pattern special = Pattern.compile("[[email protected]#$%&*,.()_+=|<>?{}\\[\\]~-]"); 

public static boolean checkString(String input) { 
    boolean bool_string = patternString.matcher(input).matches(); 
    boolean bool_special = !special.matcher(input).matches(); 
    return (bool_string && bool_special); 
} 

checkString應該返回true,如果輸入的是:你好消防BlaKc

checkString應該返回false,如果輸入的是:,tabl_e+,hel/lo

我該怎麼做?謝謝

+0

這篇文章我認爲是你的答案http://stackoverflow.com/questions/3617797/regex-to-match-only-letters – eldjon

回答

1

使用這樣的事情:

if (subjectString.matches("[a-zA-Z]+")) { 
    // It matched! 
    } 
else { // nah, it didn't match... 
    } 
  • 沒有必要與^$錨定的正則表達式,因爲matches方法只查找完全匹配
  • [a-zA-Z]是匹配一個字符類字符在範圍a-zA-Z
  • +量詞使得引擎匹配一次或多次
+0

謝謝,很高興它幫助。 :) – zx81

相關問題