【问题标题】:Regex with blank characters带有空白字符的正则表达式
【发布时间】:2013-01-20 08:43:26
【问题描述】:

我正在尝试编写一个与具有以下属性的字符串匹配的正则表达式:

  1. 正好包含 3 个字符。
  2. 可以包含空格。
  3. 至少一个字符应为非空格。
  4. 只允许空格和数字。

请参阅下面的示例。我使用b 来表示一个空格字符。

有效示例

123 b12 bb1 1bb 12b

无效示例

bbb 1b2

我试过了

 [0-9 ]{1, 3}

上面的正则表达式匹配所有字符为空的字符串。有人可以帮我写一个更好的正则表达式吗?

【问题讨论】:

  • 为什么1b2 无效?它不违反您上面所说的四个规则中的任何一个。

标签: regex


【解决方案1】:

我会为此使用前瞻:

^(?=.*\d)[\d ]{3}$

说明:

^         # Start of string
(?=.*\d)  # Assert presence of at least one digit
[\d ]{3}  # Match exactly three digits or spaces
$         # End of string

【讨论】:

  • 我使用 pcre 测试这个正则表达式,它甚至不匹配 123
  • @slier:对不起,我在角色类中有一个虚假的^。傻我。
【解决方案2】:

这应该完整地写出来。幸运的是,如果您的意思是只希望数字前面或后面有空格(从不允许的1b2 位可以看出),那么可能性很小。

([0-9]  )|([0-9]{2} )|([0-9]{3})|(  [0-9])|( [0-9]{2})

你有它。

当然,如果您可以在正则表达式之外检查长度=3,则正则表达式本身可以缩短为

([0-9]{1,3}[ ]*)|([ ]*[0-9]{1,3})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-03
    • 2013-07-26
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 2019-05-17
    相关资源
    最近更新 更多