【问题标题】:Regex allowing a space character in Java正则表达式允许在 Java 中使用空格字符
【发布时间】:2011-04-09 07:41:20
【问题描述】:

大家好,所以我试图允许一些文本输入在发送之前通过正则表达式检查。我希望文本仅包含 A-Z、0-9 和空格“”字符。这是我现在的代码:

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

但是,当我输入“这是一个测试”之类的内容时,这仍然会给出 //fail 结果

有什么想法吗?谢谢大家。

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您没有在正则表达式中包含空格。请尝试以下操作:

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

    【讨论】:

    • 啊...我以为 _ 表示“”。那么简单的[a-zA-Z0-9 ]+ 应该可以吗?
    • 是的。 _ 是文字下划线。这似乎是你不想要的。我已经更新了我的示例。
    • 完美。非常感谢。
    【解决方案2】:

    \s 允许任何 ASCII 空白字符。考虑使用它而不是“”。

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

    【讨论】:

    • 不,\s 仅适用于 7 位数据。它不适用于 Java 的本机字符集。
    • 这对我来说是个新闻!我想我应该小心一点。
    • 这是标准 Java 正则表达式库的问题。它不适用于 Java 自己的字符集!您必须将 JNI 转移到 ICU 才能获得正常工作的任何东西——我的意思是,至少,它符合 UTS#18 Unicode Regular Expressions 中规定的基本 Unicode 功能的 1 级要求。 Java 无法满足其中的大部分要求,更不用说在 2 级或 3 级领域的任何进一步发展。这就是为什么 Google 为 Android 做 JNI-to-ICU 的事情。他们需要 Unicode 支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多