regexp:荷兰语和阿拉伯语名称

时间:2014-06-26 13:58:18

标签: regex

我想创建一个帮助我验证荷兰语和阿拉伯语名称的正则表达式 这些名称由三部分组成:

第一个:只有字母,最少两个最大长度为三个字符,这部分是一个选项;
第二:只有字母,最少两个最大长度为三个字符,这部分是一个选项;
第三:只有字母最少两个字符最长,这部分是强制性的;

有效示例

Kohl
Duerr
van Doe
de Hoofdoorp
van der Saar
Al Ahmazi
ibn 

2 个答案:

答案 0 :(得分:1)

我看到有三个选项:

  1. ([a-zA-Z]{2,3} ){0,2}([a-zA-Z]{2,})这将匹配零到两个大写或小写的两个或三个字母的序列,后跟一个空格,后跟两个到无限大写或小写字母。请参阅此正则表达式的示例here
  2. ([a-z]{2,3} ){0,2}([a-z]{2,})这与上一个相同,但要求"不区分大小写"旗。激活此标志的语言不同,但通常可以这样实现:/([a-z]{2,3} ){0,2}([a-z]{2,})/i。请参阅此正则表达式的示例here
  3. ([A-Z][a-z]{1,2} |[a-z]{2,3} ){0,2}([A-Z][a-z]{1,}|[a-z]{2,})这个正则表达式与其他正则表达式相似,但有一个主要区别:只有每个单词的第一个字母可以大写。否则,它会做同样的事情。请参阅此正则表达式的示例here

答案 1 :(得分:0)

这就是你所需要的:

/^(\w{2,3} )?(\w{2,3} )?(\w{2,3})$/
  • ^匹配该行的开头。
  • \w匹配一个字。
  • {2,3}表示2到3个字符之间的内容。
  • ?使其成为可选项。
  • $匹配该行的结尾。