黑马程序员技术交流社区
标题:
怎么用javascript验证输入的有效性啊
[打印本页]
作者:
何红卫
时间:
2013-3-29 23:46
标题:
怎么用javascript验证输入的有效性啊
本帖最后由 何红卫 于 2013-3-31 13:41 编辑
javascript不熟啊,我这代码是要验证输入的用户名必须是字母数字或下划线, 不能以数字开头,否则就是在ID为errorUserName的label里提示错误信息。为什么不管输什么都会提示错误,帮忙看看是哪里的逻辑错了。
<script type="text/javascript">
function userNameCheck() {
var userName = document.getElementById("nameId").value;
document.getElementById("errorUserName").style.color = "red";
if (!userName) {
document.getElementById("errorUserName").innerHTML = "用户名不能为空";
document.getElementById("nameId").focus();
}
else {
for (var i = 0; i < userName.length; i++) {
if (typeof (userName.charAt(0)) == Number) {
document.getElementById("errorUserName").innerHTML = "用户名必须是字母数字或下划线, 不能以数字开头";
return;
}
if (typeof (userName.charAt(i)) != Number && typeof (userName.charAt(i)) != String && userName.charAt(i) != "_") {
document.getElementById("errorUserName").innerHTML = "用户名必须是字母数字或下划线, 不能以数字开头";
return;
}
}
document.getElementById("errorUserName").innerHTML = " ";
}
}
</script>
复制代码
作者:
杜磊
时间:
2013-3-30 08:43
前端验证基本上都是使用的正则表达式验证的。
你这样单纯的判断是很麻烦的。
var regex=/^(_|[A-Za-z])([A-Za-z0-9][1])/;
这个正则也不知道 对不对 手写的 你试试吧。
不对的地方 请指教啊
作者:
王杰
时间:
2013-3-30 10:53
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<script type="text/javascript">
function userNameCheck() {
var userName = document.getElementById("nameId").value;
document.getElementById("errorUserName").style.color = "red";
if (!userName) {
document.getElementById("errorUserName").innerHTML = "用户名不能为空";
document.getElementById("nameId").focus();
}
else {
var re="^[a-zA-Z_][A-Za-z0-9_]*$";
//alert(userName.match(re));
if(userName.match(re)==null){
document.getElementById("errorUserName").innerHTML = "用户名必须是字母数字或下划线.";
return false;
}
document.getElementById("errorUserName").innerHTML = " ";
return true;
}
}
</script>
</head>
<body>
<form action = "#">
username:<input type="text" id="nameId"/><div id="errorUserName"></div>
<input type = "submit" value = "userNameCheck" Onclick = "return userNameCheck();"
</form>
</body>
</html>
复制代码
作者:
coolfeiweb
时间:
2013-3-30 12:15
果断使用正则表达式啊
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^\d{n}$”
只能输入至少n位数字:“^\d{n,}$”
只能输入m-n位的数字:“^\d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^\+?[1-9][0-9]*$”
只能输入非零的负整数:“^\-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^\w+$”
验证用户密码:“^[a-zA-Z]\w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。
验证是否含有^%&',;=?$\"等字符:“[^%&',;=?$\x22]+”
只能输入汉字:“^[\u4e00-\u9fa5],{0,}$”
验证Email地址:“^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$”
验证InternetURL:“^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$”
验证电话号码:“^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$”
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
验证身份证号(15位或18位数字):“^\d{15}|\d{}18$”
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正确格式为:“01”“09”和“1”“31”。
作者:
张正强
时间:
2013-3-30 17:32
在JavaScript中使用自定义正则表达式(手写的,应该没错)
var str=要验证的文本;
function valid(str){
var pattern=new RegExp(/^[\w-]+(\.[\w-])*@([\w-]+\.)+[a-zA-Z]+$/);//可以根据楼上的提供的,修改为所需的正则表达式规则
return pattern.test(str)
复制代码
作者:
何红卫
时间:
2013-3-31 13:43
coolfeiweb 发表于 2013-3-30 12:15
果断使用正则表达式啊
"^\d+$" //非负整数(正整数 + 0)
谢谢,好好学下,不习惯用这些,还是C#时的思维
作者:
何红卫
时间:
2013-3-31 13:43
王杰 发表于 2013-3-30 10:53
谢谢,要得就是这个效果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2