正则替换实现输入框只能有数字、中英文逗号
本来很简单的小功能,因为细节折腾了一会,所以一定要细心才行 实现代码也比较简单大家可以参考下 核心代码: function renumdou(str){ var regexp = /[^d,,]]*/g; newstr=str.replace(regexp,""); return newstr } 编程小技巧小编给大家分享另外一个不错的代码: 自动检测数字替换 数字正则表达式 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <input onkeyup='check(this)'/> </BODY> <script> function check(obj){ var sreg = /^-+.*/g; var zero = /^0[1-9]+.*d*/g; var val = obj.value; var plus = ''; if(sreg.test(val)){ val = val.replace(/-+/g,''); plus = '-'; } val = val.replace(/s+/g,''); if(/^.+.*$/.test(val)){ val = ''; } val = val.replace(/[^d.]/,''); val = val.replace(/(^d+.{1})(d*).*/g,'$1$2'); val = val.replace(/(^d+.d{3})d*/g,'$1'); val = val.replace(/^[0]*(0{1})([1-9]*)(.*)/g,'$1$2$3'); if(zero.test(val)){ val = val.replace(/0([1-9]+)(.*)$/,'$1$2'); } obj.value = plus+val; } </script> </HTML> RegExp 使用说明 一:正则表达式的创建方式 注意:RegExp预置了$属性 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <SCRIPT LANGUAGE="JavaScript1.2"> var regexp = new RegExp("(w+)s(w+)"); str = "John Smith"; newstr=str.replace(regexp,"$2"); newstr2=str.replace(regexp,"$1"); document.write("原字符串:"+str+"<br/>"); document.write(newstr+"<br/>"); document.write(newstr2+"<br/>"); document.write('$1='+RegExp.$1+" $2="+RegExp.$2); </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 二: match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。它返回指定的值,而不是字符串的位置。 语法 如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。 match使用实例: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <SCRIPT LANGUAGE="JavaScript1.2"> var str="1 plus 2 equal 3"; var str2="11/23/55"; var results=str.match(new RegExp("d+","gi")); for(var i=0;i<results.length;i++){ document.write(results[i]+"<br/>"); } var res=str2.match(new RegExp("(dd?)/(dd?)/(dd)")); if(str2.length == res[0].length){ document.write(res[1]+"<br/>"); document.write(res[2]+"<br/>"); document.write(res[3]+"<br/>"); } </SCRIPT> </HEAD> <BODY> </BODY> </HTML> function dateCheck(value) { re = new RegExp("(dd?)/(dd?)/(dd)"); var result = value.match (re); if (result){ if (result[0].length != value.length){ alert ("Wrong date format. The correct format should be MM/dd/yy.") return false; }else{ var t = result[3]; var y = parseInt("20" + t); var m = parseInt(result[1],10) - 1; var day = parseInt(result[2],10); var d = new Date(y,m,day); if (d.getFullYear() != y || d.getMonth() != m || d.getDate() != day){ alert ("error date!") return false; }else{ var sm = result[1].length == 1?'0' + result[1]:result[1]; var sday = result[2].length == 1?'0' + result[2]: result[2]; var sy = result[3]; else return sm + '/' + sday + '/' + sy; } } }else{ alert ("Wrong date format. The correct format should be MM/dd/yy."); return false; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |