在javascript中检查字符串是否为字母数字

新手上路,请多包涵

我想检查一个字符串在 javascript 中是否严格为字母数字。我试过这个:

 var Exp = /^[0-9a-z]+$/;
if(!pwd.match(Exp))
alert("ERROR")

但问题是,如果它包含所有字母或所有数字,它会传递输入字符串,如果它包含字符和数字,我希望函数传递。

原文由 user1504606 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 561
2 个回答

试试这个正则表达式:

 /((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+[0-9a-z]+$/i

这只允许字母数字。

它不允许:

  • 只有阿尔法
  • 只有数字

参考 现场演示

更新:

下面的正则表达式允许:

 /^([0-9]|[a-z])+([0-9a-z]+)$/i

  • 字母数字
  • 只有阿尔法
  • 只有数字

原文由 Siva Charan 发布,翻译遵循 CC BY-SA 3.0 许可协议

在我看来,Felix Kling 的回答是最好的单一正则表达式解决方案,但我会考虑使用三种模式来实现。这允许您返回有用的错误消息:

 if(pwd.match(/[^0-9a-z]/i))
    alert("Only letters and digits allowed!");
else if(!pwd.match(/\d/))
    alert("At least one digit required!");
else if(!pwd.match(/[a-z]/i))
    alert("At least one letter required!");
else
    // process pwd

不过,您应该考虑允许使用非字母数字字符作为您的密码——这将使它们更加安全。

原文由 Martin Ender 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题