正则表达式允许在Java中使用空格字符
嘿所有,所以我试图允许一些文本输入在发送之前通过正则表达式检查。我希望文本只包含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