我需要一个正则表达式,应该验证它应该包含至少一个字母(A-Z,a-z)和可选的数字(0-9)。
有效名称:
名称无效,
[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;
}
}
但两者都不起作用。
在这方面有人可以提供帮助吗?
答案 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)
如果要强制使用字母字符,则必须包含前瞻或进行额外测试,就像前面的示例一样。