这是我目前拥有的,这将匹配字母数字字符和空格:
^[a-z0-9\s]+$
我想要做的是确保只有一个空格不会超过一(1)个匹配。以上将匹配“这是一个测试”,但如果输入是“This isatest”或“T hisisatest”,我只希望它匹配。一旦总空间不止一个,它将不再匹配。
理想情况下,如果空间是领先或尾随,它也不匹配,但这只是结冰。
修改 我们的想法是,这将用于在创建帐户时验证帐户名称。帐户名称只能包含拉丁字母,数字和单个空格。但是,它可以是所有字母或所有数字,不需要空格。这绝对是关于空间而不是空白。
答案 0 :(得分:6)
中间最多允许一个空格。
^[a-zA-Z0-9]+\s?[a-zA-Z0-9]+$
将只允许一个空格
^[a-zA-Z0-9]+\s[a-zA-Z0-9]+$
<强> EDIT1:强>
以上解决方案不接受单个字符串。
以下解决方案也匹配单字符串
^[a-zA-Z0-9]+([ ][a-zA-Z0-9]+)?$
答案 1 :(得分:5)
首先通过修剪前导和尾随空格来清除用户名。使用占有量词的正则表达式:
^[a-z0-9]++(?: [a-z0-9]++)?$
答案 2 :(得分:0)
尝试:
^[a-z0-9]+(?: [a-z0-9]+)?$
(编辑:您的后续建议您要检查空格而不是空格)。
答案 3 :(得分:0)
这很简单,只需将其构建成块。
^[a-z0-9]+(?: [a-z0-9]+)?$
一个或多个字母数字,然后是由单个空格和一个或多个字母数字组成的可选组。 (顺便说一下,\s
匹配一个空格字符,而不是空格。也就是说,它实际匹配[ \t\n]
。你真正想要的是什么?)
答案 4 :(得分:0)
应该就这么简单。匹配文本中间的0或1个空格字符。虽然它也匹配标签。
[a-z0-9]+\s{0,1}[a-z0-9]+