用于至少一个字母表(A-z)的名称验证的正则表达式

时间:2013-02-08 13:16:02

标签: javascript regex

我需要一个正则表达式,应该验证它应该包含至少一个字母(A-Z,a-z)和可选的数字(0-9)。

有效名称:

  • AAAA
  • aaaa1
  • SO
  • John P. Example

名称无效,

  • 1111
  • @@@@
到目前为止我试过的正则表达式

[a-zA-Z0-9\.\'\-_\s]{1,20}  

function validateFirstName(a) {
  if (/[0-9]/.test(a) && /[a-zA-Z]/.test(a)) {
      return false;
  } else {
      return true;
  }
}

但两者都不起作用。

在这方面有人可以提供帮助吗?

4 个答案:

答案 0 :(得分:5)

尝试:

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

解释:

  • 中间方括号中的位("三明治中的肉")与字母字符匹配。 +之后确保至少有其中一个。
  • 另外两个方括号表达式("三明治中的面包")匹配字母数字字符。 *之后的*允许任意数量的这些。
  • 围绕整个事物的^和$确保它是整个文本被查看而不仅仅是它的一部分。

答案 1 :(得分:1)

[a-zA-Z]+.*|.*[a-zA-Z]+|.*[a-zA-Z]+.*符合您提供的示例。

答案 2 :(得分:1)

所以你需要任意数量的a-z字符或数字,然后至少有一个a-z字符和任意数量的a-z字符或数字:

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

这应该可以正常工作。

答案 3 :(得分:1)

如果您只想检查字符串是否包含字母字符,那么只需执行以下操作:

/[a-z]/i.test(str)

如果字符串应仅由至少包含一个字母字符的字母数字字符组成:

/^(?=.*[a-z])[a-z\d]+$/i.test(str)

/[a-z]/i.test(str) && /^[a-z\d]+$/i.test(str)

否则,[a-zA-Z0-9.'\-_\s]{1,20}实际上看起来不错,但你必须把它锚到字符串的开头和结尾:

/^[a-zA-Z0-9.'\-_\s]{1,20}$/.test(str)

如果要强制使用字母字符,则必须包含前瞻或进行额外测试,就像前面的示例一样。