正则表达式:使用重复的组定义字符串的最大长度

时间:2014-10-02 13:48:07

标签: regex regex-group

标题可能令人困惑,但我会尝试用一些例子来解释。 这是我目前的表达方式。

^([A-ZÆØÅ][a-zæøå]+[\s-]{1}){2,20}$

我想要一个与这些匹配的表达式: 一般规则是,

- 每个单词都必须以大写字母开头

- 以下大写字母只能是小写字母

- 可以是最多一个 - 或者是彼此之后的空白

困难的部分, 在这些的每个组合中,我希望最后一行最多为20个字符

我想要一个与这些匹配的表达式:

April-Can Æøå
An-An-An An An-An
Aaaaabbbbbcccccddddd
Aaa

非匹配

andkas
Andfak-lkakad
AppleApple
Carrotcarrotcarrotcarrotcarrotcarrot
Banana- Banana
Apple-apple-apple-apple-apple banana banana apple carrot

2 个答案:

答案 0 :(得分:4)

使用前瞻:

^(?=.{2,20}$)[A-ZÆØÅ][a-zæøå]+(?:[\s-][A-ZÆØÅ][a-zæøå]+)*$

其中:

(?=.{2,20}$)确保你在tyhe字符串中有2到20个字符 然后你有一个单词以大写字母开头,后面跟一个空格或短划线和另一个单词。它可能有几个单词

答案 1 :(得分:1)

您可以使用此正则表达式:

^([A-ZÆØÅ][a-zæøå]{1,19}[\s-])*[A-ZÆØÅ][a-zæøå]{1,19}$

RegEx Demo