正则表达式匹配任何单词之间只有1个空格的单词字符

时间:2014-05-26 23:55:05

标签: java regex string

我有一个非常具体的用户名格式,我似乎无法通过正则表达式完成它

这是我的模式:

"\w([ ]{4,12})\w"

格式的具体内容如下:

  • 用户名必须大于或等于4个字符但少于13个字符
  • 用户名不得包含空格作为第一个或最后一个字符
  • 用户名不得包含连续的空格(或任何类型的非字符空格),例如:User Name
  • 用户名不得包含任何特殊字符,只允许使用单词字符,数字和空格
  • 空格前后必须有单词字符

我以前的模式工作不正常,任何正确方向的指导都会很棒

2 个答案:

答案 0 :(得分:1)

这个怎么样?它使用负前瞻来确保任何时候它与空格匹配,它后面没有空格。

\w(\w| (?! )){2,10}\w

答案 1 :(得分:0)

您需要一个类似于以下内容的正则表达式:

[a-zA-Z0-9]((?!\s{2,})[a-zA-Z0-9 ]){2,10}[a-zA-Z0-9]

这是:

[a-zA-Z0-9]:匹配任何字母数字字符

(?!\s{2,}):2个或更多空白字符的负面看法

加:

[a-zA-Z0-9 ]:匹配任何字母数字或空格字符:

( ... ){2,10}:2至10次

[a-zA-Z0-9]:以任何字母数字字符结尾。