javaScript对只能输入某些特殊组合字符串的验证
因工作需要,今天帮同事写了一个要求如下的前台js验证代码:
1)以数字,逗号,"-"三个符号组成
2)以数字开头和结尾.
3)"-"前后必须是数字
<script type="text/javaScript">/**********only be some special char;*/function onlySomeChar(inputStr){if((inputStr.match(/^\d.*\d$/g) && (inputStr.search(/[^0-9,-]/g)==-1)) || inputStr.match(/^\d*$/)){for(var i =0;i<inputStr.toString().length;i++){if(inputStr.charAt(i)=="-"){if(isInt(inputStr.charAt(i-1))==false || isInt(inputStr.charAt(i+1))==false)return false;}}return true;}return false;}/***if Integer return true *else return false;*/function isInt(str){if (str.search(/[^0-9]/g)!=-1){return false;}return true;}//the function of testfunction test(strIn){if(onlySomeChar(strIn)==false){alert(0);}else{alert(1);}}</script><input type="text" id="test" onchange="test(this.value)">function test(obj){ if(obj.value.match(/^(\d{1,}[\d \- \,]?\d{1,})+$/)){ alert(1); }else{ alert(0); }}
比如 "11,1,1-11341131" 或者 "1" 或是 "11-1,1" 这样的组合都是满足条件的,但测试不通过
error:
1.如果只是一个数字的时候一看就不满足;
2.(/^(\d{1,}[\d \- \,]?\d{1,})+$/ =>数字后面必须是 ",",与要求不合
3. 要求是 数字中间的字符不一定要存在
4. ......
不过很感谢你的回复 3 楼 zbm2001 2009-05-14 var reg = /^\d[\d,-]*\d$/g;
var reg1 = /\D-|-\D/;
var str = "11,1,1-11341131";
if(reg.test(str) && !reg1.test(str)){
// pass
} 4 楼 zbm2001 2009-05-14 一个表达式,逻辑稍复杂些:
var reg = /^\d(-(?=\d))?([^\D]-(?=\d)|[\d,])*((?=\d)-)?\d$/g;
alert(reg.test(str))