带条件和后缀的正则表达式

时间:2018-11-28 18:25:23

标签: regex regex-negation regex-lookarounds

我需要帮助来创建一个正则表达式,以过滤至少包含一个数字,大写字母,一个小写字母并以“ @ xyz.sd”结尾的字符串 到目前为止,我已经尝试过了

(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z0-9@\.]{12,25}

此条件完全满足“ @ xyz.sd”部分以外的所有条件。我试图这样做,

(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z0-9@\.]+(@xyz.sd){12,25}

但是它不起作用。

1 个答案:

答案 0 :(得分:3)

您可以使用另一个前瞻,并且需要使用锚点:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*@xyz\.sd$)[a-zA-Z0-9@.]{12,25}$

或者更好的是,您可以使用此正则表达式:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z0-9@.]{5,18}@xyz\.sd$

使用的量词范围{5,18}代替了{12,25},因为@xyz.sd将占用7个字符。