字符类:一组相似的元素 [ ]括号的整体代表一个整体
//[] 代表的只是一个字符
var str = "abc";
var re = /a[bcd]c/;
alert(re.test(str)); //true
var str = "abcc";
var re = /a[bcd]c/;
alert(re.test(str)); //false
排除:^ 如果^写在[ ]里面的话,就代表排除的意思,类似于JavaScript中!(取反)的意思
var str = "adef"; //字符串中的第二个字符是:d
var re = /a[^ascde]ef/; //正则中第二个字符是:[^ascde]
//如果字符串中的第二个字符,在[^ascde]中没有对应的字符,就匹配,返回true,反之返回false
alert(re.test(str)); //false
范围:[a-z]意思就是字母从a到z,一定是从小到大的,[a-z0-9A-Z]:代表一位 [a-z0-9A-Z]+:代表多位
\1 :重复的第一个子项
\2 :重复的第二个子项
var str = "abca";
var re = /(a)(b)(c)\1/; //\1代表和第一个子项重复
alert(re.test(str)); //true
var re = /\w\w/ ; 这两个字符可以不相同,例如可以是:d9,d7,ww
var re= /(\w)\1/ ; 这种情况的时候,必须是两个相同的字符,例如:dd,qq
用到重复子项的实例:
var str = "zzhsdhioadhkandahdiasdnadnivdfkjinwkefiwepifpoerioueroi";
var arr = str.split('');
str = arr.sort().join('');
var re = /(\w)\1+/g;
var number = 0;
var value = "";
str.replace(re,function($0,$1){
//alert($0);
if(number<$0.length){
number = $0.length;
value = $1;
}
});
alert('出现最多的字符是'+value+',出现的次数是:'+number);
量词:{ }
{1,7} :最少出现1次,最多出现7次
{1,}:最少出现1次
{1}:正好出现一次,不能多也不能少
+ :{1,} 都是至少出现一次 /\d+/ = /\d{1,}/
?:{0,1}出现0次或者1次
*:{0,}至少出现一次
^:正则的最开始位置,就代表起始的意思
$:正则的最末尾的位置,就代表结束的意思
判断输入的是不是qq号:
var aInput = document.getElementsByTagName('input');
var re = /^[1-9]\d{4,11}$/
aInput[1].onclick = function(){
if(re.test(aInput[0].value)){
alert('是qq号');
}else{
alert('不是qq号');
}
}
去掉字符串前后的空格
var str = " hello ";
alert('('+item(str)+')');
function item(str){
var re = /^\s+|\s+$/g
return str.replace(re,'');
}
正则中 . :代表任意字符
\. :代表真正的点
//案例一
var str = "abd";
var re = /a.d/; //.可以代表任意字符
alert(re.test(str)); //true
//案例二
var str = "a密d";
var re = /a.d/;
alert(re.test(str)); //true
//案例三
var str = "abd";
var re = /a\.d/;
alert(re.test(str)); //false
//案例四
var str = "a.d";
var re = /a\.d/;
alert(re.test(str)); //true
\B :非独立部分
var str = "onetwo";
var re = /\bone/; //代表起始的位置
alert(re.test(str)); //true
var str = "onetwo";
var re = /\bo\b/;
alert(re.test(str)) //false
var str = "o";
var re = /\bo\b/;
alert(re.test(str)) //true
用正则写getClass的方法,
<ul>
<li class="one">123122</li>
<li>1133114</li>
<li class="one two">47885555111</li>
<li class="onetwo">112555</li>
<li class="one">22255</li>
</ul>
var aLi = getClassName(document,'one');
for(var i=0;i<aLi.length;i++){
aLi[i].style.background = "red";
}
function getClassName(parent,sClass){
var arr = [];
var aEle = parent.getElementsByTagName('li');
//var re = //; //当正则需要传参数的时候,需要用全称写法
var re = new RegExp('\\b'+sClass+'\\b'); // 输出特殊字符时,需要加 \
for(var i=0;i<aEle.length;i++){
if(re.test(aEle[i].className)){
arr.push(aEle[i]);
}
}
console.log(arr);
return arr;
}
理解\b和\B
var str = "onetwo";
var re = /\bone/; //代表起始的位置
alert(re.test(str)); //true
var str = "onetwo";
var re = /\bo\b/;
alert(re.test(str)) //false
var str = "o";
var re = /\bo\b/;
alert(re.test(str)) //true