我希望用户名后面的文本框只接受字母或数字或它们的组合。如果用户输入除字母或数字之外的任何内容,则单击按钮时会出现警告对话框。我的代码是:
<html>
<body>
<form name="f1">
username <input type="text" name="tb1"><br>
<input type="button" value="validate" onclick="val()">
</form>
<script>
function val()
{
if(document.f1.tb1.value=="")
alert('Enter username!');
}
</script>
</body></html>
谁能告诉我解决方案?
答案 0 :(得分:2)
在val
函数中使用正则表达式:
function val()
{
if(document.f1.tb1.value=="")
alert('Enter username!');
if(/[^a-zA-Z0-9]/.test(document.f1.tb1.value))
alert('Username must only consist of letters and numbers')
}
这一行的作用是查看传递给test
的字符串是否包含a-z,A-Z和0-9以外的字符串。如果是,则它会发出警报。如果您愿意接受下划线作为有效字符,那么if
会变得更加简单:
if(/[\W]/.test(document.f1.tb1.value))
\w
是表示所有数字,字符和下划线的快捷方式。 [^...]
语法表示“与此列表不匹配的任何字符。\W
实际上是[^\w]
的快捷方式,并查找不是AZ,az,0-9的任何内容和_。
根据您的评论进行修改
如果您只想接受字母字符,只需测试a-z而不是在表达式中添加0-9:
if(/[^a-zA-Z]/.test(document.f1.tb1.value))
这会检查document.f1.tb1.value
的值,看它是否有任何不是字母的东西,即a-z和A-Z之外的任何字母。
有很多关于正则表达式的文档。理解了这个概念后,我会使用MDN作为参考。
答案 1 :(得分:0)
怎么样?:
编辑:
function val()
{
if(document.f1.tb1.value == null ||
document.f1.tb1.value == undefined ||
/[^a-zA-Z0-9]+/.test(document.f1.tb1.value))
alert('invalid username!');
}