【问题标题】:Regular expression for no white space at start or end, but allow white space in middle, but also allow only one char inputs:正则表达式在开始或结束时没有空格,但允许中间有空格,但也只允许一个字符输入:
【发布时间】:2013-02-05 19:15:30
【问题描述】:

正则表达式开始或结束没有空格,但允许中间有空格,但也只允许输入一个字符:

我得到的最接近的是:^([^\s])([\sa-zA-Z0-9_\-]*)([^\s])$

这个问题是只有当输入是三个或更多字符时它才会通过,我需要它接受一个字符并通过。例如:

以下内容应该通过(使用“方便阅读,字符串中不需要)

"A"
"A B"
"Hello There"

以下应该失败

" A"
"A "
" A "
" test"

还需要只允许 A-Z a-z 0-9 - _ 虽然在中间部分,但不能在开头或结尾添加空格

有什么想法吗?

谢谢

【问题讨论】:

  • Please also include a tag specifying the programming language or tool you are using.(来自[regex]标签描述)
  • 对不起,也只需要允许 A-Z a-z 0-9 - _ 虽然出来,中间部分要加空格,但不能在开头或结尾添加空格

标签: .net regex


【解决方案1】:

非空格,可选地后跟多组空格,然后是非空格:

^[^\s]+(\s+[^\s]+)*$

编辑:

要包括字符限制,只需将非空格类替换为允许的字符:

^[-_a-zA-Z0-9]+(\s+[-_a-zA-Z0-9]+)*$

另外,考虑对 Unicode 友好并使用类似的东西

^[-_\p{Alnum}]+(\s+[-_\p{Alnum}]+)*$

(假设您的正则表达式解释器允许)。

【讨论】:

  • 对不起,我错过了它也只需要允许 A-Z a-z 0-9 - _ 虽然在中间部分添加空格,但不能在开头或结尾添加空格
  • 你能解释一下这实际上是在说什么吗? ^[-_a-zA-Z0-9]+(\s+[-_a-zA-Z0-9]+)*$
  • 它是一些非零数量的允许非空格字符,可选地后跟多个后缀,其中每个后缀是空格,后跟非零数量的允许非空格字符。
【解决方案2】:

将第一个非空格字符之后的所有内容设为可选:

^(?=\S)[a-zA-Z0-9_\s-]*\S$

【讨论】:

  • 这允许您输入任何字符作为第一个字符,它应该限制为 a-zA-Z0-9
  • 你没这么说吧?已编辑。
  • 对不起,我在初始化帖子中错过了。在最后一刻编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
相关资源
最近更新 更多