2011-04-08 229 views
7

嘿所有,所以我試圖允許一些文本輸入在發送之前通過正則表達式檢查。我希望文本只包含A-Z,0-9和空格「」字符。這裏是我的代碼現在:正則表達式允許在Java中使用空格字符

if(!title.matches("[a-zA-Z0-9_]+") { 
    //fail 
} 
else { 
    //success 
} 

然而,這仍然給了//fail結果當我輸入類似「這是一個測試」

任何想法?謝謝大家。

回答

19

你不包括正則表達式中的空間。請嘗試以下操作:

if (!title.matches("[a-zA-Z0-9 ]+")) 
+0

啊......我以爲_表示一個「」。所以簡單的'[a-zA-Z0-9] +'應該可以工作嗎? – JMRboosties 2011-04-08 23:35:30

+0

是的。 '_'是字面下劃線。這看起來像你不想要的。我更新了我的例子。 – 2011-04-08 23:41:13

+1

完美。非常感謝你。 – JMRboosties 2011-04-08 23:44:37

3

\s允許任何ASCII空白字符。考慮使用它而不是「」。

if(!title.matches("[a-zA-Z0-9_\s]+")) { 
    //fail 
} 
else { 
    //success 
} 
+3

不,'\ s'只適用於7位數據。它不適用於Java的本地字符集。 – tchrist 2011-04-08 23:33:28

+0

這是我的新聞!我想我應該更加小心一點。 – 2011-04-08 23:38:01

+1

這是標準Java正則表達式庫的問題。它不適用於Java自己的字符集!你必須將JNI交給ICU才能獲得任何可以正常工作的東西 - 我的意思是,作爲最低標準,它符合基本Unicode功能的級別1要求,這些要求已經詳細說明[UTS#18 Unicode Regular Expressions](http:///unicode.org/reports/tr18/)。 Java不能滿足其中大多數,更不用說二級或三級土地上的任何其他東西了。這就是Google爲什麼要爲Android安裝JNI-ICU的原因。他們需要Unicode支持。 – tchrist 2011-04-08 23:51:30

相關問題