2013-07-02 48 views
0

目前我试图创建一个正则表达式来验证这需要输入到包含每个以下中的至少一个的用户输入字段:验证在Java脚本

  • 一个大写字符
  • 一个数字
  • 下列特殊字符中的一个:& @ ! # +

我试图创建一个正则表达式,将正确地验证输入:

/^([a-zA-Z+]+[0-9+]+[&@!#+]+)$/i.test(userpass); 

但是,输入未正确验证。我应该怎么做呢?

+1

你的正则表达式要求所有的字母是第一位的,然后所有的号码,那么所有的特殊字符。另外,你在每个组中都允许使用“+”,为什么? – Barmar

+0

@ Qantas94Heavy - 特殊字符列表在OP的正则表达式中。在行之间阅读我认为他们希望测试字符串至少包含一个“特殊”字符,至少一个字母和至少一个数字,但是该正则表达式根据Barmar的评论强制执行特定顺序。 – nnnnnn

+0

[密码验证正则表达式]的可能重复(http://stackoverflow.com/questions/5068843/password-validation-regex) – Toto

回答

1

试试这个:

/[a-z]/i.test(userpass) && /[0-9]/.test(userpass) && /[&@!#+]/.test(userpass) 
+0

thnx兄弟.....现在它的工作... –

1

你可以先行简化正则表达式

^(?=.*[&@!#+])(?=.*[A-Z])(?=.*\d).+$ 
    ------------- --------- ------- 
     |  |   |->match only if there's a digit ahead 
     |  |->match only if there's a uppercase alphabet ahead 
     |->match only if there's any 1 of [&@!#+] 

[A-Z]将匹配一个大写字母

\d将匹配单个数字


或使用search

if(input.search(/\d/)!=-1 && input.search(/[&@!#+]/)!=-1) && input.search(/[A-Z]/)!=-1)