RegEx a-zA-Z或a-zA-Z后跟 - 和a-zA-Z

时间:2013-09-03 13:04:56

标签: regex

我需要以下允许

的正则表达式
[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 

我是怎么做到的?

3 个答案:

答案 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]+)*

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

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