我是正则表达式的新手...... 我被问到一个接受字母数字的正则表达式,更多的字符,并且单词之间只有一个空格。
例如: 这应该匹配:
"Hello world"
这不应该:
"Hello world"
有什么想法吗?
这是我的表达:
[\w':''.'')''(''\[''\]''{''}''-''_']+$
我已经尝过了\ s? (空间角色曾经或永远 - 对吗?)但我没有让它发挥作用。
答案 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