2015-05-19 50 views
0

比方说,我想匹配“字符串应该是2个到8个字符之间”,我会使用正则表达式/^.{2,8}$/是否可以在一个正则表达式中匹配几个独立的正则表达式?

现在,如果我想匹配“字符串应该至少包含一个数字”,我会使用正则表达式/\d/

最后,如果我想匹配“字符串应该至少包含一个大写字母”,我会用/[A-Z]/

但现在我不知道,有可能将字符串匹配到一个所有这些条件正则表达式?我的意思并不是以一种“或”的方式,我的意思是以一种“与”的方式。

+0

因此,对于*一个或多个数字和大写字母与2的总长度RE > 8 *? –

+0

@AlexK。在这种情况下是的。我想知道如何以一种普遍的方式来做到这一点,但我做出了这个例子来使它更加具体。 – Evert

回答

1

您可以使用以下方法:

^(?=.*\d)(?=.*[A-Z]).{2,8}$ 

说明:

  • (?=.*\d)向前看至少一个数字
  • (?=.*[A-Z])向前看至少一个大写字母
  • .{2,8}的实际匹配

DEMO

老答案

^(?=.*\d.*[A-Z]).{2,8}$|^(?=.*[A-Z].*\d).{2,8}$ 

说明:

  • (?=.*\d.*[A-Z])向前看至少一个数字,然后由一个大写字母
  • .{2,8}实际不符或
  • (?=.*[A-Z].*\d)向前看至少一个大写字母后跟一位数字
  • .{2,8}实际比赛

DEMO

+0

@Ever欢迎..我刚刚意识到答案可以简化和概括..检查更新.. :) –

+0

谢谢,这正是我一直在寻找。 – Evert

+0

乐意帮忙:) –