正则替换实现输⼊框只能有数字、中英⽂逗号本来很简单的⼩功能,因为细节折腾了⼀会,所以⼀定要细⼼才⾏
实现代码也⽐较简单⼤家可以参考下
核⼼代码:
function renumdou(str){
var regexp = /[^\d,,]]*/g;
place(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 = '';
st(val)){
val = place(/-+/g,'');
plus = '-';
}
val = place(/\s+/g,'');
if(/^\.+.*$/.test(val)){
val = '';
}
val = place(/[^\d\.]/,'');
val = place(/(^\d+\.{1})(\d*).*/g,'$1$2');
val = place(/(^\d+\.\d{3})\d*/g,'$1');
val = place(/^[0]*(0{1})([1-9]*)(.*)/g,'$1$2$3');
st(val)){
val = place(/0([1-9]+)(.*)$/,'$1$2');
}
obj.value = plus+val;
}
</script>
</HTML>
RegExp 使⽤说明
⼀:正则表达式的创建⽅式
1.⽂字格式,使⽤⽅法如下:
/pattern/flags(即:/模式/标记)
2.RegExp构造函数,使⽤⽅法如下:
new RegExp("pattern"[,"flags"])(即:new RegExp("模式"[,"标记"]))
参数:
pattern(模式):表⽰正则表达式的⽂本
正则匹配逗号
flags(标记):如果指定此项,flags可以是下⾯之⼀:
g:global match(全定匹配)
i:ignore case(忽略⼤⼩写)
gi:both global match and ignore case(匹配所有可能的值,也忽略⼤⼩写)
注意:⽂字格式中的参数不要使⽤引号标记,⼆够造器函数的参数则要使⽤引号标记。所以下⾯的表达式
是等价的:
/ab+c/i ==================== new RegExp("ab+c","i")
描述:
当使⽤构造器函数创建正则表达式的时候,必须使⽤正常的字符串避开规则(在字符串中加⼊前导字符\)是必须的。
例如,下⾯的两条语句是等价的:
re=new RegExp("\\w+");
re=/\w+/
注意:RegExp预置了$属性
$1, ..., $9属性
⽤圆括号括着的匹配⼦串,如果有的话。
是RegExp的属性
静态,只读
在JavaScript 1.2, NES 3.0以上版本提供
描述:因为input是静态属性,不是个别正则表达式对象的属性。你可以使⽤RegExp.input 访问该
属性。
能加上圆括号的⼦串的数量不受限制,但正则表达式对象只能保留最后9 条。如果你要访问所有的
圆括号内的匹配字串,你可以使⽤返回的数组。
<!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";
place(regexp,"$2");
place(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() ⽅法可在字符串内检索指定的值,或到⼀个或多个正则表达式的匹配。它返回指定的值,⽽不是字符串的位置。
语法
stringObject.match(searchvalue)
stringObject.match(regexp)参数描述
searchvalue 必需。规定要检索的字符串值。
regexp 必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要⾸先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
返回值
存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
说明
match() ⽅法将检索字符串 stringObject,以到⼀个或多个与 regexp 匹配的⽂本。这个⽅法的⾏为在很⼤程度上有赖于regexp 是否具有标志 g。
如果 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("(\\d\\d?)/(\\d\\d?)/(\\d\\d)"));
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("(\\d\\d?)/(\\d\\d?)/(\\d\\d)");
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;
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论