正则表达式与空白字符

时间:2013-01-20 08:43:26

标签: regex

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

  1. 正好包含3个字符。
  2. 可以包含空格。
  3. 至少一个字符应为非空格。
  4. 只允许使用空格和数字。
  5. 见下面的例子。我使用b来表示空格字符。

    有效示例

    123
    b12
    bb1
    1bb
    12b
    

    无效的示例

    bbb
    1b2
    

    我试过

     [0-9 ]{1, 3}
    

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

2 个答案:

答案 0 :(得分:8)

我会使用前瞻:

^(?=.*\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

答案 1 :(得分:5)

这应该写得完整。幸运的是,如果你的意思是你只希望数字可选地前面或后面跟着空格(从1b2位看不允许),只有少数几种可能性。

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

你有它。

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

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