单个正则表达式以获得具有多个条件的多个模式

时间:2015-01-21 10:34:30

标签: javascript regex

使用输入文本的正则表达式模式实现的标准是,

  • 支持至少一个大写字母
  • 支持至少一个小写字母
  • 支持列出至少一个特殊字符 - > @%$
  • 支持至少一个数字

没有开始和结束标准。

尝试使用以下单个正则表达式实现

^(
  (\w+\d+[@%\$]+)
     |
     (\d+[@%\$]+\w+)
        |
        ([@%\$]+\d+\w+)
             |
             (\w+[@%\$]+\d+)
)$

问题是,

支持至少一个大写不起作用。 我很确定这不是构建正则表达式模式的好方法。

请帮助我以单一的正则表达式模式实现这些标准。

提前致谢!!!

通过标准

测试@ 123
测试@ 123
@ 123tesT
123 @测试
TTTTeeeess @@@@ $$$ 111112222
@@@@ $$$ 1111TTT @@@ $$ ESSS

失败标准

测试(无特殊字符)
@ 123
123
@
T
测试
test @ 123(无大写)
测试@ 123安培; ('&'不支持该模式)
@ 123test
@ TTT123(无小写)

2 个答案:

答案 0 :(得分:0)

^(?=.*[A-Z])(?=.*\d)(?=.*[a-z])(?=.*[@%$]).+$

试试这个。这应该这样做。使用前瞻来满足每个条件。

参见演示。

https://regex101.com/r/tX2bH4/70

答案 1 :(得分:0)

有一种更好的方法,使用lookaheads

^
(?=.*[A-Z])
(?=.*[a-z])
(?=.*[@%$])
(?=.*\d)
.*$