正则表达式 - 仅匹配字母数字和单词之间的单个空格

时间:2010-01-13 15:59:40

标签: regex

我是正则表达式的新手...... 我被问到一个接受字母数字的正则表达式,更多的字符,并且单词之间只有一个空格。

例如: 这应该匹配:

"Hello world"

这不应该:

"Hello  world"

有什么想法吗?

这是我的表达:

[\w':''.'')''(''\[''\]''{''}''-''_']+$

我已经尝过了\ s? (空间角色曾经或永远 - 对吗?)但我没有让它发挥作用。

2 个答案:

答案 0 :(得分:1)

使用Oniguruma正则表达式语法,您可以执行以下操作:

^[\w\.:\(\)\[\]{}\-_](?: ?[\w\.:\(\)\[\]{}\-_])*$

假设'其他角色'是。 :()[] {} - _

此正则表达式将匹配一个字符串,该字符串必须以单词字符或其他允许字符之一开头和结尾,并且连续不能有多个空格。

如果您使用x标志(忽略正则表达式中的空格),则需要执行此操作:

^[\w\.:\(\)\[\]{}\-_](?:\ ?[\w\.:\(\)\[\]{}\-_])*$

唯一的区别是空间前面的\

答案 1 :(得分:1)

怎么样:

^[\w\.:\(\)\[\]{}\-]+( [\w\.:\(\)\[\]{}\-]+)*$

匹配

  • ^[\w\.:\(\)\[\]{}\-]+:行以1个或多个可接受的字符开头(下划线包含在\ w中)。
  • ( [\w\.:\(\)\[\]{}\-]+):包含一个分隔符和一个或多个可接受的字符。
  • *$:重复单个分隔符,并重复0次或更多次。

测试:

  • Hello(space)World:TRUE
  • Hello(space)(space)World:FALSE
  • Hello:TRUE
  • Hello(space):FALSE
  • Hello(tab)World:FALSE