Regex 正则表达式a-zA-Z或a-zA-Z后跟-和a-zA-Z

Regex 正则表达式a-zA-Z或a-zA-Z后跟-和a-zA-Z,regex,Regex,我需要下面的正则表达式,它允许 [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字符之间允许无限的减号和空格

例如:

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

当减号是第一个或最后一个字符时,不需要在字符类中转义减号


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

您忘记锚定表达式。您不需要在字符类中转义负号(当它是第一个或最后一个时)@Sniffer:OP并不意味着他需要锚定。除非必要,否则我不加。有时,正则表达式用于搜索。@Bohemian:习惯的力量和与OP正则表达式的对称性。谢谢你指出。你应该用你正在使用的相关语言来标记你的问题,因为不同的正则表达式引擎有不同的语法/功能。
(?i)[a-z]+([ -]+[a-z]+)*