嘿所有,所以我試圖允許一些文本輸入在發送之前通過正則表達式檢查。我希望文本只包含A-Z,0-9和空格「」字符。這裏是我的代碼現在:正則表達式允許在Java中使用空格字符
if(!title.matches("[a-zA-Z0-9_]+") {
//fail
}
else {
//success
}
然而,這仍然給了//fail
結果當我輸入類似「這是一個測試」
任何想法?謝謝大家。
嘿所有,所以我試圖允許一些文本輸入在發送之前通過正則表達式檢查。我希望文本只包含A-Z,0-9和空格「」字符。這裏是我的代碼現在:正則表達式允許在Java中使用空格字符
if(!title.matches("[a-zA-Z0-9_]+") {
//fail
}
else {
//success
}
然而,這仍然給了//fail
結果當我輸入類似「這是一個測試」
任何想法?謝謝大家。
你不包括正則表達式中的空間。請嘗試以下操作:
if (!title.matches("[a-zA-Z0-9 ]+"))
\s
允許任何ASCII空白字符。考慮使用它而不是「」。
if(!title.matches("[a-zA-Z0-9_\s]+")) {
//fail
}
else {
//success
}
不,'\ s'只適用於7位數據。它不適用於Java的本地字符集。 – tchrist 2011-04-08 23:33:28
這是我的新聞!我想我應該更加小心一點。 – 2011-04-08 23:38:01
這是標準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
啊......我以爲_表示一個「」。所以簡單的'[a-zA-Z0-9] +'應該可以工作嗎? – JMRboosties 2011-04-08 23:35:30
是的。 '_'是字面下劃線。這看起來像你不想要的。我更新了我的例子。 – 2011-04-08 23:41:13
完美。非常感謝你。 – JMRboosties 2011-04-08 23:44:37