代码之家  ›  专栏  ›  技术社区  ›  Niladri Banerjee - Uttarpara

模式有时匹配有时不匹配

  •  1
  • Niladri Banerjee - Uttarpara  · 技术社区  · 6 年前

    Regex for password must contain at least eight characters, at least one number and both lower and uppercase letters and special characters

    wcodePattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z0-9\d$@$-_!%*?&]{8,20}"; 
    

    我明白了,当我在密码文本框中输入一个字符串时。 Niladri1! Nopasss123!! ,它显示 User name not valid. .

    下面是angular 5 html的代码:

    <div *ngIf="wcode.errors?.pattern">User name not valid.</div> 
    

    我还测试了以下内容,它以字符串作为 Noladris

    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@-_!])[A-Za-z0-9\d@-_!]{8,20}$
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Wiktor Stribiżew    6 年前

    你需要使用

    wcodePattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@$!%*?&])[A-Za-z0-9@$_!%*?&-]{8,20}$'
    

    或者,既然你是在 RegExp

    wcodePattern = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$_!%*?&-]{8,20}$'
    

    注:

    • - 在字符类的开始/结束处匹配文字连字符,或在内部转义
    • 字符串文本中的反斜杠必须加倍,否则它们会定义转义序列,如 \n \t 等等。
    • $ 必须添加在模式的末尾以“锚定”匹配(即匹配字符串的结尾以确保最大字符限制)。
    • [$@$] = [$@] -无需在字符类中重复字符。