正则表达式为一个字母和字符没有特殊字符

时间:2018-04-12 14:41:14

标签: java regex

我正在尝试编写一个正则表达式来验证密码字符串中的以下条件

  • 至少一个号码和一个字母
  • 不应包含任何特殊字符

试过这个正则表达式

[a-zA-Z]+[0-9]+[a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*

但它允许特殊字符。 任何帮助将不胜感激!

示例

  • aaaa - 不接受
  • 11111 - 不接受
  • aaaa1 - 接受
  • aaaa1 * - 不接受

3 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

(?=.*\d.*)(?=.*[a-zA-Z].*)[0-9A-Za-z]+

前两部分将承诺一个数字和一个a-z字符,第三部分允许您插入数字或a-z字符。

答案 1 :(得分:0)

你可以创建一个正则表达式,首先检查第一个字符,如果它是一个字母^[a-zA-Z],然后期望一个未知数量的字母字符[a-zA-Z0-9]*。然后期望至少有一个数字[0-9]+,并最终期望另一个未知数量的字母直到结束[a-zA-Z0-9]*$。这看起来像:

^[a-zA-Z][a-zA-Z0-9]*[0-9]+[a-zA-Z0-9]*$

如果它以数字^[0-9]开头,则生成等价物,然后期望未知数量的字母字符[a-zA-Z0-9]*。然后期望至少有一个字母[a-zA-Z]+,最后期待另一个未知数量的字母,直到结束[a-zA-Z0-9]*$。这看起来像:

^[0-9][a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*$

并在这两个正则表达式中进行OR:

^( [a-zA-Z][a-zA-Z0-9]*[0-9]+[a-zA-Z0-9]* | [0-9][a-zA-Z0-9]*[a-zA-Z]+[a-zA-Z0-9]*) $

答案 2 :(得分:-1)

您的模式应以^(字符串的开头)开头,以$结尾(字符串的结尾)。如果发现模式出现,我认为你的检查会成功。

所以它应该是

^([a-zA-Z]+[0-9]+[a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*)$