Description
将数字和. 之外的清除
onkeyup='this.value=this.value.replace(/[^\d.]/gi,"")'
()的用法
var str2=str.match(/qq:\'\d+\'/);
得到的是一个数组[qq:'2275025']
var str2=str.match(/qq:\'(\d+)\'/);
得到的数组["qq:'2275025'","2275025"]
str2[2]=2275025
()的作用就是在当前匹配的结果中把()的东西,作为数组第二个元素,让你可以获取
\w的用法
我们平常看到了网站用户名注册,就用到了这个
\w=[A-Za-z0-9_]
在正则表达式中,大写和小写,
相反,比如\D表示非数字,\d表示数字,\W=[^A-Za-z0-9_]
,说到这,我们可以知道[^是取反的意思(^是匹配开始)
正则表达式中,元字符需要转义,例如(),转义,用\这个我们都知道
[] 中括号的用法
在中括号中,我们可以这样写[123 )]
这个表示是1或者2或者3或者空格或者),在中括号中,元字符好像不需要转义
|的用法
|表示或者的意思,通常我们需要匹配的可能有几个就可以|,比如身份证号,最后一位可能是数字,也可能是X,这里我们就可以用到|
*?+
*——0到多个
?——0到1个
+——1到多个
身份证正则
/^(\d{6}[1,2]\d{3}[0,1]\d{7}|\d{6}[1,2]\d{3}[0,1]\d{6}(\d|X|x))$/
数字逗号分隔
var strNum='67788889999';
var strNumn=strNum.split('').reverse().join('').replace(/(\d{4})/g,'$1 ').replace(/\,$/,'').split('').reverse().join('');
console.log(strNumn);
//这个还可以这样写
function thousand(str){
return str.replace(/(?!^)(?=([0-9]{3})+$)/g,',');
}
console.log(thousand(str));//"1,234,567,890"
console.log(thousand("123456"));//"123,456"
console.log(thousand("1234567879876543210"));//"1,234,567,879,876,543,210"
//这个正则也可以
var f2 = '99999999999'.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');
//对于有小数的
var f = '99999999999.02'.replace(/\d{1,3}(?=(\d{3})+(?:\.\d{1,2})?$)/g, '$&,');
//toLocaleString竟然就可以达到这个效果
var str = "1234567890";
(+str).toLocaleString();//"1,234,567,890"
"420684199206554016".replace(/(\d{3})(?!$)/g,'$&,')
"420,684,199,206,554,016"
//限制输入8个字符,相当于maxLeng=8
var t=/^[A-Za-z0-9|\u4e00-\u9fa5]{8}/;
document.getElementById('key').onkeyup = function(){
var self =this.value;
this.value = t.test(self)?self.match(t):self;
}
在使用过程中,我们可能会匹配多个,match 在这里就不好用了
我们可以使用exec,这里是例子是匹配字符串中所有的src链接,因为javascript不支持反向零宽断言,好像只能用捕获的方式来写,注意在下面result和p要先定义出来,写在while里面会死循环
var str = '';
var result;
var p = /src="(.*?)"/g;
while (result = p.exec(str)){
console.log(result[1])
}
扩展阅读
正则表达式前端使用手册
javascript正则表达式---正向预查
#2014-07-18