【正则表达式】--常用汇总(陆续更新)

213 阅读2分钟

浮点型demo:

if(/^\d+(\.\d+)?$/.test(value)){

this.val(/^\d+(\.\d+)?$/.exec(value))

}

金额支持两位小数:

!(/^(([1-9][0-9]*)|(([0]\.\d{1,2}|[1-9][0-9]*\.\d{1,2})))$/.test(this.money.discount))

正整数:

!(/^[1-9]\d*$/.test(value))

中文或英文1-20位:

!(/^[a-zA-Z\u4e00-\u9fa5]{1,20}$/.test(value))

中、英、字符:

!isNaN(value)

字母和数字6-12位:

!(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$/.test(value))

英文、字符或数字1-20位:

!(/^[0-9\~#-+=_^$@%&!*]{1,20}$/.test(value))

手机格式:

!(/^1[3-9]\d{9}$/.test(value))

身份证:

!(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/.test(value))

 

 

千分位小数点后两位

 

function cc(s){
		  	s=s+"";
		    if(/[^0-9\.]/.test(s)) return "invalid value";
		    s=s.replace(/^(\d*)$/,"$1.");
		    s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
		    s=s.replace(".",",");
		    var re=/(\d)(\d{3},)/;
		    while(re.test(s))
		            s=s.replace(re,"$1,$2");
		    s=s.replace(/,(\d\d)$/,".$1");
		    return s.replace(/^\./,"0.")
		}

 

 

 

 

 

只能输入数字

<input οnkeyup="this.value=this.value.replace(/[^\d]/g,'')" />

 

邮箱:/([\w\-]+\@[\w\-]+\.[\w\-]+)/

字母+空格:/^[a-zA-Z ]*$/

合法URL:/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i

非负整数(正整数+0):^\d+$/

正整数:/^[0-9]*[1-9][0-9]*$/

非正整数(负整数 + 0):/^((-\d+)|(0+))$/

负整数:/^-[0-9]*[1-9][0-9]*$/

整数:/^-?\d+$/

非负浮点数(正浮点数 + 0):/^\d+(\.\d+)?$/

正浮点数:/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/

非正浮点数(负浮点数 + 0):^((-\d+(\.\d+)?)|(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+)?$/

特殊字符:/[~#^$@%&!*]/
if(/[~#^$@%&!*]/gi.test(value)){return false}

 

^[1-9]\d*$    //匹配正整数
^-[1-9]\d*$   //匹配负整数
^-?[1-9]\d*$   //匹配整数
^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)

 

 

中文

var reg=/^[\u4e00-\u9fa5]{0,}$/; 
if(value!=""&&reg.test(value)){
return true;
}else{
return false;
}

 

/*邮箱验证*/
function verify_mail(name){
var value=$.trim($("#"+name).val());
var reg=/^[a-z0-9]+([._\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/; 
if(value!=""&&!reg.test(value)){
return false;
}
return true;
}

 

 

/*身份证验证*/
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];    // 加权因子   
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];            // 身份证验证位值.10代表X   
function verify_card(name) {
var idCard=$.trim($("#"+name).val());
idCard = trim(idCard.replace(/ /g, ""));               //去掉字符串头尾空格                     
if (idCard.length == 15) {   
return isValidityBrithBy15IdCard(idCard);       //进行15位身份证的验证    
} else if (idCard.length == 18) {   
var a_idCard = idCard.split("");                // 得到身份证数组   
if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){   //进行18位身份证的基本验证和第18位的验证
return true;   
}else {   
return false;   
}   
} else {   
return false;   
}   
}   
/**  
* 判断身份证号码为18位时最后的验证位是否正确  
* @param a_idCard 身份证号码数组  
* @return  
*/  
function isTrueValidateCodeBy18IdCard(a_idCard) {   
var sum = 0;                             // 声明加权求和变量   
if (a_idCard[17].toLowerCase() == 'x') {   
a_idCard[17] = 10;                    // 将最后位为x的验证码替换为10方便后续操作   
}   
for ( var i = 0; i < 17; i++) {   
sum += Wi[i] * a_idCard[i];            // 加权求和   
}   
valCodePosition = sum % 11;                // 得到验证码所位置   
if (a_idCard[17] == ValideCode[valCodePosition]) {   
return true;   
} else {   
return false;   
}   
}   
/**  
* 验证18位数身份证号码中的生日是否是有效生日  
* @param idCard 18位书身份证字符串  
* @return  
*/  
function isValidityBrithBy18IdCard(idCard18){   
var year =  idCard18.substring(6,10);   
var month = idCard18.substring(10,12);   
var day = idCard18.substring(12,14);   
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));   
// 这里用getFullYear()获取年份,避免千年虫问题   
if(temp_date.getFullYear()!=parseFloat(year)   
||temp_date.getMonth()!=parseFloat(month)-1   
||temp_date.getDate()!=parseFloat(day)){   
return false;   
}else{   
return true;   
}   
}   
/**  
* 验证15位数身份证号码中的生日是否是有效生日  
* @param idCard15 15位书身份证字符串  
* @return  
*/  
function isValidityBrithBy15IdCard(idCard15){   
var year =  idCard15.substring(6,8);   
var month = idCard15.substring(8,10);   
var day = idCard15.substring(10,12);   
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));   
// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法   
if(temp_date.getYear()!=parseFloat(year)   
||temp_date.getMonth()!=parseFloat(month)-1   
||temp_date.getDate()!=parseFloat(day)){   
return false;   
}else{   
return true;   
}   
}   
//去掉字符串头尾空格   
function trim(str) {   
return str.replace(/(^\s*)|(\s*$)/g, "");   
}


/*最多只能输入2位小数限制*/
//example:<input type="text" οnkeypress="return checkDot(event,this.value)" οninput="checkValue(this)" onpropertychange="checkValue(this)">
function checkDot(event,value){
var keyCode = window.event?window.event.keyCode:event.which;
//如果按下的不是数字键或是.返回false  停止往下操作  8为退格键  0是针对firefox的
if((keyCode<48 || keyCode>57) && keyCode!=46 && keyCode!=8 && keyCode!=0){
return false;
}
//如果存在小数点 则不能再输入小数点
if(keyCode===46 && value.indexOf('.')>-1){
return false;
}
return true;
}
/*取小数点后两位,否则截取*/
function checkValue(elem){
var _regx = /\.\d{3,}$/,
_val = elem.value,
_index = _val.indexOf('.');


//如果满足 小数点后面3位小数或两3位以上小数  则进行截取
if(_regx.test(_val)){
elem.value = _val.slice(0,_index+3);
}
if(_val.substring(0,1)==0 && _val.substring(1,2)=='.'){

}else if(_val.substring(0,1)==0 && _val!=''){       
elem.value=parseFloat(_val);
}   
}