正则表达式在开始或结束时没有空格,但允许中间有空格,但也只允许一个字符输入:
我得到的最接近的是:^([^\s])([\sa-zA-Z0-9_\-]*)([^\s])$
这样做的问题是只有当输入是三个或更多字符时它才会通过,我需要它接受单个字符并通过。例如:
以下应该通过(使用“以便于阅读,字符串中不需要)
"A"
"A B"
"Hello There"
以下应该失败
" A"
"A "
" A "
" test"
还需要只允许 A-Z a-z 0-9 - _ 虽然出来,在中间部分但不是在开始或结束处添加空格
有任何想法吗?
谢谢
最佳答案
非空格,可选后跟多组空格,然后是非空格:
^[^\s]+(\s+[^\s]+)*$
编辑:
要包含字符限制,只需用允许的字符替换非空格类:
^[-_a-zA-Z0-9]+(\s+[-_a-zA-Z0-9]+)*$
另外,考虑对 Unicode 友好并使用类似的东西
^[-_\p{Alnum}]+(\s+[-_\p{Alnum}]+)*$
(假设您的正则表达式解释器允许)。
关于.net - 正则表达式开头或结尾没有空格,但中间允许有空格,但也只允许一个字符输入 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14715133/