2013-07-15 33 views
1

我希望代碼接受所有7位ascii字符集,但不接受8位字符。接受7位ascii字符的Java代碼

user.getFirstName()).matches("[\\w\\s]+") 
+0

你不會用regexp成功,因爲regexp與ascii編碼無關。你應該把你的字符轉換成一個字節數組(指定你想要的encding)並檢查這個字節數組。 –

+0

您可以查看字符串並查看每個字符以查看它是否具有<128的代碼點。 – Thilo

回答

2

有十六進制輸入數字的 '\ X' 的方式:我與正則表達式嘗試(來源http://www.regular-expressions.info/reference.html

yourString.matches("[\\x00-\\x7F]+"); 

在Java中,這可能是:

yourString.matches("[\\u0000-\\u007F]+"); 
+0

一個反斜槓,而不是兩個足以滿足要求。一個人可以在java源代碼中隨處使用這種符號,例如用數學公式,版權符號或其他任何方法來使用Javadoc。 –

3

這個集合有一個Java正則表達式類。它是\p{ASCII}。請參見Pattern類。

"ABC".matches("\\p{ASCII}+") == true; 
"ABCŻ".matches("\\p{ASCII}+") == false; 
+0

+1指出 - 雖然我有時與Java正則表達式工作,我只是意識到,我錯過了很多選擇!看起來像Java是更好的Perl :-) –

+1

「看起來像Java是更好的Perl」你怎麼能說,面對雙反斜槓? ;-) – Thilo

+0

@PaulGorbas它是[matches](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#matches(java.lang.String))。 –

相關問題