我需要以下允许的正则表达式
[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
我怎么做到的?
我需要以下允许的正则表达式
[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
我怎么做到的?
你只是想重复-XXX
块?
[a-zA-Z]+(?:[ -][a-zA-Z]+)*
(请注意,这(?:...)
是一个非捕获组;其语法因正则表达式引擎而异)。
这已被多次询问,但对于未来的用户,我将提供一个解决方案:
[a-zA-Z]+([ -][a-zA-Z]+)*
(以 开头a-zA-Z
,然后可选地包括[ -][a-zA-Z]
0 次或更多*
)
尽管根据具体要求,您可以使用\w
\w+([ -]\w+)*
如果这是您要匹配的单个字符串,而不是在更大的字符串中找到它,您需要一个开始和结束锚点:
^[a-zA-Z]+([ -][a-zA-Z]+)*$
这和我想的一样简短:
(?i)[a-z]+([ -]+[a-z]+)*
您不需要在第一个或最后一个字符类中转义减号。
通过使用“忽略大小写”开关,正则表达式也缩短了一点。