至少2个字母和任意数量的数字以及任何顺序的一些特殊符号

时间:2017-09-13 10:11:17

标签: ruby regex

我需要编写REGEX以允许(以任何顺序)仅包含字母,数字和少数特殊符号(空格,连字符,&等),但至少包含2个字母,并禁止任何其他特殊符号。

现在,我有这个:

\A^(?=.*[a-zA-Z]{2,})(?=.*[0-9]*).*+$\z

但它几乎接受所有特殊符号。我怎样才能改进它?感谢。

1 个答案:

答案 0 :(得分:1)

您可以根据您的要求使用此正则表达式:

\A(?=(?:[^a-zA-Z]*[a-zA-Z]){2})[a-zA-Z0-9\s&-]+\z

RegEx分手:

  • \A:开始
  • (?=(?:[^a-zA-Z]*[a-zA-Z]){2}):预测我们在输入中至少有2个字母
  • [a-zA-Z0-9\s&-]+:匹配字母数字字符或空格或&-
  • \z:结束

RegEx Demo