正则表达式与空白字符

AGE*_*GEM 3 regex

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

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

见下面的例子.我b用来代表一个空格字符.

有效的例子

123
b12
bb1
1bb
12b

无效的例子

bbb
1b2

我试过了

 [0-9 ]{1, 3}
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ker 9

我会使用前瞻:

^(?=.*\d)[\d ]{3}$
Run Code Online (Sandbox Code Playgroud)

说明:

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


Mr *_*ter 5

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

([0-9]  )|([0-9]{2} )|([0-9]{3})|(  [0-9])|( [0-9]{2})
Run Code Online (Sandbox Code Playgroud)

你有它.

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

([0-9]{1,3}[ ]*)|([ ]*[0-9]{1,3})
Run Code Online (Sandbox Code Playgroud)