2

我需要以下允许的正则表达式

[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 

我怎么做到的?

4

3 回答 3

2

你只是想重复-XXX块?

[a-zA-Z]+(?:[ -][a-zA-Z]+)*

(请注意,这(?:...)是一个非捕获组;其语法因正则表达式引擎而异)。

于 2013-09-03T13:07:04.970 回答
1

这已被多次询问,但对于未来的用户,我将提供一个解决方案:

[a-zA-Z]+([ -][a-zA-Z]+)*

(以 开头a-zA-Z,然后可选地包括[ -][a-zA-Z]0 次或更多*

尽管根据具体要求,您可以使用\w

\w+([ -]\w+)*

如果这是您要匹配的单个字符串,而不是在更大的字符串中找到它,您需要一个开始和结束锚点:

^[a-zA-Z]+([ -][a-zA-Z]+)*$
于 2013-09-03T13:07:37.530 回答
0

这和我想的一样简短:

(?i)[a-z]+([ -]+[a-z]+)*

您不需要在第一个或最后一个字符类中转义减号。

通过使用“忽略大小写”开关,正则表达式也缩短了一点。

于 2013-09-03T13:18:19.843 回答