【问题标题】:JQuery - Confirm that password contains non alphanumeric characterJQuery - 确认密码包含非字母数字字符
【发布时间】:2017-07-05 12:53:37
【问题描述】:

我想检查密码是否包含非字母数字字符(如!)。

是否有任何类似的解决方案,因为这是针对字母字符: 如果密码包含非字母数字字符,我想要一个 true。

var upperCase= new RegExp('[A-Z]');

if($("#input-set-password").val().match(upperCase))
{
}

【问题讨论】:

  • 强制xkcd:Password Strength
  • 所以你想强迫你的用户创建他们可能不记得的密码,从而把它写在便利贴上,保存在电子邮件或类似的地方?这是鼓励使用非字母数字字符的好方法。我认为强制执行它并不聪明。
  • xkcd:密码强度和回答 100% 有意义,我会重新考虑。泰。

标签: jquery alphanumeric


【解决方案1】:

这是一种方法。 result 变量如果只有字母数字则为真,如果它包含非字母数字字符则为假

var reg_password1 = 'test123';
var letters = /^[a-zA-Z0-9]+$/;
var result = letters.test(reg_password1);

检查它是否包含至少1个数字和小写和大写字母:

if(/\d/.test(reg_password1) && /[a-z]/.test(reg_password1) && /[A-Z]/.test(reg_password1))

将这些结合起来:

var reg_password1 = 'test123';
if(/^[a-zA-Z0-9]+$/.test(reg_password1) && /\d/.test(reg_password1) && /[a-z]/.test(reg_password1) && /[A-Z]/.test(reg_password1))
{
    //Has at least 1 uppercase 1 lowercase 1 number and is only alphanumeric
}

这是JSFiddle

【讨论】:

  • 我明白了。嗯,但我想检查一下密码是否至少包含一个大写字符、一个数字和一个非字母数字 (!)。
  • 我正在寻找可以与 !¤% 等一起使用的东西。所以非字母数字。我想要一个像“Asd1!”这样的字符串。返回真。
  • 这个函数做你想做的,它只是返回 false 而不是 true
  • “Asd1!”返回 false是的,但它也为“asd”返回 false。
  • 因为 asd 没有大写字母和数字,这是您要求的。你想让它检查它是否至少有 1 个数字 1 小写和 1 个大写字符
【解决方案2】:

我使用了 jquery.validate.js。 您不必弄乱 js 检查输入是否具有正确的字符,只需将其标记在 html 上,其余的工作都会为您完成。例如

<input data-val="true" <!-- Tell validate to check this input --> data-val-length="The Password must be at least  6 characters long." <!-- Message shown when length isn't meet --> data-val-length-max="100" <!-- Max length for 'this' input --> data-val-length-min="6" <!-- Minimum length for 'this' input--> data-val-required="The Password field is required." <!-- Error message shown if input is empty---> id="Password" name="Password" type="text" value="">

更多关于https://jqueryvalidation.org/

【讨论】:

    【解决方案3】:

    这里有两个问题:

    1) 您的表达式检查了一个大写字符是否存在于字符串中的任何位置。而我编辑的表达式^[A-Z]+$“翻译”为:

    “从开头 (^) 到结尾 ($) 包含大写字母(+ = 至少一个或多个)的字符串。”

    2) match() 将 - 顾名思义 - 查找并返回所有匹配项。您将希望在此处的正则表达式上使用test(),这将返回真或假,如您所见:

    var upperCase= new RegExp('^[A-Z]+$');
    console.log(upperCase.test($("#input-set-password").val()));
    console.log(upperCase.test($("#input-set-password2").val()));
    console.log(upperCase.test($("#input-set-password3").val()));
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="text" id="input-set-password" value="ANBASFJH" />
    <input type="text" id="input-set-password2" value="ANBASFJHasg" />
    <input type="text" id="input-set-password3" value="ANBASF123" />

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-05
      • 2016-10-29
      • 2017-02-06
      • 2021-02-22
      • 2012-05-18
      • 1970-01-01
      • 2012-12-27
      • 2020-02-23
      相关资源
      最近更新 更多