正则替换实现输入框只能有数字、中英文逗号

所属分类: 网络编程 / 正则表达式 阅读数: 1327
收藏 0 赞 0 分享

本来很简单的小功能,因为细节折腾了一会,所以一定要细心才行

实现代码也比较简单大家可以参考下

核心代码:

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 使用说明

一:正则表达式的创建方式  
 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"; 
 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() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。它返回指定的值,而不是字符串的位置。

语法
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; 
   } 
 } 

更多精彩内容其他人还在看

深入分析正则表达式的子模式

在正则表达式中,可以使用“(”和“)”将模式中的子字符串括起来,以形成一个子模式。将子模式视为一个整体时,那么它就相当于一个单个字符。下面我们就来详细了解下子模式
收藏 0 赞 0 分享

可以少写1000行代码的正则表达式

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。知道这20个正则表达式,能让你少写1000行代码,想知道吗
收藏 0 赞 0 分享

20个正则表达式必知(能让你少写1,000行代码)

这篇文章主要介绍了20个正则表达式必知(能让你少写1,000行代码)的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数

这篇文章主要介绍了JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

java常用正则表达式

这篇文章主要介绍了java常用正则表达式,需要的朋友可以参考下
收藏 0 赞 0 分享

如何快速学习正则表达式

在日常工作中,我们经常写正则表达式,比如在表单中经常用来验证用户输入的格式是否正确。接下来通过本文给大家介绍如何快速学习正则表达式,感兴趣的小伙伴一起学习吧
收藏 0 赞 0 分享

运用正则表达式匹配所有表名

这篇文章主要介绍了运用正则表达式匹配所有表名 的相关资料,非常不错,具有参考借鉴价值,需要的朋友一起看看吧
收藏 0 赞 0 分享

浅析正则表达式-替换原则(.NET) 图文

最近经常用到替换的东西所以就出来整理下,这里要分享的是正则表达式里面的替换原则,首先要声明的是这里提及到的替换原则是.NET里面的正则表达式的替换原则
收藏 0 赞 0 分享

正则替换实现输入框只能有数字、中英文逗号

最近在开发过程中,需要一个输入框里面只能有数字与中英文逗号,因为是相关文章,其它的也不让出现,容易造成问题,编程容易把介绍复制到里面,所以想到了这个方法
收藏 0 赞 0 分享

自动检测数字替换非数字的正则表达式

这篇文章主要介绍了自动检测数字替换非数字的正则表达式 ,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多