var str = 'assssjdssskssalsssdkjsssdss'; var arr = str.split(''); //把字符串转换为数组 str = arr.sort().join(''); //首先进行排序,这样结果会把相同的字符放在一起,然后再转换为字符串 //alert(str); // aaddjjkklsssssssssssssssss var value = ''; var index = 0; var re = /(\w)\1+/g; //匹配字符,且重复这个字符,重复次数至少一次。 str.replace(re,function($0,$1){ //alert($0); 代表每次匹配成功的结果 : aa dd jj kk l sssssssssssssssss //alert($1); 代表每次匹配成功的第一个子项,也就是\w: a d j k l S if(index<$0.length){ //如果index保存的值小于$0的长度就进行下面的操作 index = $0.length; // 这样index一直保存的就在最大的长度 value = $1; //value保存的是出现最多的这个字符 } }); alert('最多的字符:'+value+',重复的次数:'+index); // s 17
量词:代表出现的次数{n,m}:至少出现n次,最多m次
{n,} :至少n次
* :任意次 相当于{0,}
? :零次或一次 相当于{0,1}
+ :一次或任意次相当于 {1,}
{n}: 正好n次
例子:判断是不是QQ号
//^ : 放在正则的最开始位置,就代表起始的意思,注意 /[^a] / 和 /^[a]/是不一样的,前者是排除的意思,后者是代表首位。
//$ : 正则的最后位置 , 就代表结束的意思
//首先想QQ号的规则 1 首位不能是0 2 必须是 5-12位的数字 var aInput = document.getElementsByTagName('input'); var re = /^[1-9]\d{4,11}$/; //123456abc为了防止出现这样的情况,所以必须限制最后 //首位是0-9,接着是4-11位的数字类型。 aInput[1].onclick = function(){ if( re.test(aInput[0].value) ){ alert('是QQ号'); }else{ alert('不是QQ号'); } };
例子:去掉前后空格(面试题经常出现)
var str = ' hello '; alert( '('+trim(str)+')' );//为了看出区别所以加的括号。 (hello) function trim(str){ var re = /^\s+|\s+$/g; // |代表或者 \s代表空格 +至少一个 前面有至少一个空格 或者后面有至少一个空格 且全局匹配 return str.replace(re,''); //把空格替换成空 }
常用的一些表单校验