我需要以下允许
的正则表达式[a-zA-Z]+
或
[a-zA-Z]+[ \\-]{0,1}[a-zA-Z]+
所以我想在a-zA-Z字符之间允许无限制的减号和空格
示例:
sdfsdfdsf-sfsdfs
sdfdsf-sdfsd-sdfdsf-sdfsdf-sdf-sdf-sdfsd-f
sdfdsf sdfsdf sdfsdf sdfsdf-sdfsdf
我是怎么做到的?
答案 0 :(得分:2)
您只想重复-XXX
块?
[a-zA-Z]+(?:[ -][a-zA-Z]+)*
(请注意(?:...)
是一个非捕获组;其语法因Regex引擎而异。
答案 1 :(得分:1)
这已被多次询问,但对于未来的用户,我将提供一个解决方案:
[a-zA-Z]+([ -][a-zA-Z]+)*
(从a-zA-Z
开始,然后可选择包括[ -][a-zA-Z]
0次或更多次*
)
虽然根据具体要求,您可以使用\w
\w+([ -]\w+)*
如果这是一个匹配的单个字符串,而不是在一个更大的字符串中找到它,那么你需要一个开始和结束锚点:
^[a-zA-Z]+([ -][a-zA-Z]+)*$
答案 2 :(得分:0)
这与我认为的一样简短:
(?i)[a-z]+([ -]+[a-z]+)*
你不需要在字符类的第一个或最后一个字符类中转义减号。
通过使用“忽略大小写”开关,正则表达式也缩短了一点。