【问题标题】:Blank spaces in regular expression正则表达式中的空格
【发布时间】:2011-08-10 19:43:52
【问题描述】:

我使用这个正则来验证我的 java web 应用程序的许多输入字段:

"^[a-zA-Z0-9]+$"

但我需要修改它,因为我有几个字段需要允许空格(例如:地址)。

如何修改它以允许空格(如果可能,不要在开头)。

我想我需要使用一些转义字符,例如\

我尝试了几种不同的组合,但都没有奏效。有人可以帮我解决这个正则表达式吗?

【问题讨论】:

  • 我做到了:这是我使用的模式:^([a-zA-Z0-9]+[a-zA-Z0-9 ]+$)? 最后我使用了?当字段需要是可选的。感谢您的回答。

标签: java regex validation


【解决方案1】:

我建议使用这个:

^[a-zA-Z0-9][a-zA-Z0-9 ]+$

它增加了两件事:首先,保证开头没有空格,同时允许您需要的字符。之后,允许使用字母 a-zA-Z,以及所有数字和空格(我的正则表达式末尾有一个空格)。

【讨论】:

  • 这允许 any 字符(除了空格)作为第一个字符,(例如:@&^$@*&^$#)(@#*$)可能不是你想要的!
  • @ridgerunner:你是对的;我更新了我的答案。我会说这是最易读的版本
【解决方案2】:

试试这个:我假设任何长度至少为一个字符的输入都是有效的。前面提到的答案没有考虑到这一点。

"^[a-zA-Z0-9][a-zA-Z0-9 ]*$"

如果要允许所有空白字符,请将空格替换为“\s”

【讨论】:

    【解决方案3】:

    这个正则表达式不允许字符串末尾有空格,一个缺点是它也接受下划线字符。

    ^(\w+ )+\w+|\w+$
    

    【讨论】:

      【解决方案4】:

      如果你只想使用空格,你可以这样做:

      ^[a-zA-Z0-9 ]+$

      如果你想包含 tabs \t, new-line \n \r\n 字符,你可以这样做:

      ^[a-zA-Z0-9\s]+$

      另外,正如您所问的,如果您不希望空格在开头

      ^[a-zA-Z0-9][a-zA-Z0-9 ]+$

      【讨论】:

        【解决方案5】:

        使用这个:^[a-zA-Z0-9]+[a-zA-Z0-9 ]+$。这应该有效。第一个原子确保开头必须至少有一个字符。

        【讨论】:

        • 第一个+ 是不必要的。
        • @Oskar 是的。你说的对。所以正确的是^[a-zA-Z0-9][a-zA-Z0-9 ]+$。我认为 darioo 的正则表达式更紧凑。
        【解决方案6】:

        这样试试 ^[a-zA-Z0-9 ]+$ 也就是在里面加个空格

        【讨论】:

        • for 以一个字符开头试试这样 ^[a-zA-Z0-9][a-zA-Z0-9 ]+$
        猜你喜欢
        • 2012-02-02
        • 2016-08-18
        • 2013-12-16
        • 2014-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        相关资源
        最近更新 更多