单一正则表达式 - 仅匹配精确定义的名称

时间:2016-05-16 16:17:57

标签: regex multiple-conditions

有一个巨大的全名列表,我只需要过滤名字长度超过3个字母字符且姓氏超过7个字母字符的名称。全名应该只包含1个名字和1个姓氏,用一个空格分隔。在名字和姓氏中都不允许使用特殊字符。全名的总长度不得超过26个字符。

我不知道如何将条件组合起来,好像我将量词放在括号后面,它不会比较全名的长度,而是正则表达式匹配输入文本的次数。

(([A-Za-z]{3,} [A-Za-z]{7,}){26}

这肯定可以由多个正则表达式完成。困难的部分是创建一个正则表达式,这是必须的。

2 个答案:

答案 0 :(得分:0)

您可以使用前瞻:

(?=^.{1,26}$)([A-Za-z]{3,} [A-Za-z]{7,})

第一部分将断言长度为0到26,第二部分是与名称匹配的规则。

答案 1 :(得分:0)

试试这个正则表达式:

(?=^[a-z]{3,}\s[a-z]{7,}$)(.*){1,27} //global,case-insensitive

它使用零长度前瞻断言来满足逻辑条件(首先是3+,一个空格,7+最后,只有字母),以及量化的“任何”到消耗适当数量的字符。

regex demo here

相关问题