Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式Javascript_Javascript_Regex - Fatal编程技术网

正则表达式Javascript

正则表达式Javascript,javascript,regex,Javascript,Regex,我在JavaScript中使用以下正则表达式进行密码策略检查: ^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$_])(?=.*[\d\W]).*$ 我使用在线正则表达式检查器尝试了上面的正则表达式 测试用例按预期通过,阴性测试用例失败。但在应用程序中部署相同的正则表达式时,无法正确验证 例如: Tracker@123不起作用,其中tRacker@123有效 Asd56544#12也可以正常工作 你能指出上面正则表达式的错误吗 您确

我在JavaScript中使用以下正则表达式进行密码策略检查:

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$_])(?=.*[\d\W]).*$
我使用在线正则表达式检查器尝试了上面的正则表达式

测试用例按预期通过,阴性测试用例失败。但在应用程序中部署相同的正则表达式时,无法正确验证

例如:
Tracker@123
不起作用,其中
tRacker@123
有效
Asd56544#12
也可以正常工作


你能指出上面正则表达式的错误吗

您确定语法正确吗

看看这个JSFIDLE,在它里面所有的测试用例都通过了


我的建议是将这个正则表达式分成几个简单的正则表达式。 您可以为密码分配规则,并且可以为每个规则分配正则表达式

比如说

  • 统治№1.密码的最小长度=8个字符(可以在没有正则表达式的情况下完成)
  • 统治№2.至少需要一位数字。(
    /[0-9]/
  • 统治№3.至少需要一个字母(
    /[a-z]/i
  • 统治№4.密码的非法字符(您不希望用户在密码中使用的某些字符的正则表达式)
  • 统治№一些小正则表达式
  • (等等)


    使用这种方法,可以更快地管理验证。例如,一年后,您必须更改密码策略。你会忘记你的大正则表达式是什么意思(并且会花很多时间改变那个大正则表达式,或者做一个新的)。但是,只需使用少量单独的正则表达式(意思是规则),您就可以轻松配置密码策略

    谢谢大家的提示和回复。我删除了最后一部分(?=.[\d\W]),一切都开始正常工作。为什么我不应该指定\d或\W?2 user632323:通过添加(?=.[\d\W])您想做什么?它的意思是“一个数字前的任何符号,或者不是一个单词”嗯,你的三个测试用例都通过了(他们应该通过)。你能发布你的代码说它失败了吗?它似乎起作用了,也许问题在于你使用它的方式。前导的
    *
    或最后一组
    (?=.[\d\W])
    有什么意义?(这不是你的问题)