JavaScript的正则表达式(二)

来源:互联网 发布:产品样本设计软件 编辑:程序博客网 时间:2024/06/08 16:41

字符类:一组相似的元素      [ ]括号的整体代表一个整体

                //[] 代表的只是一个字符var str = "abc";var re = /a[bcd]c/;alert(re.test(str));  //truevar str = "abcc";var re = /a[bcd]c/;alert(re.test(str));  //false

排除:^  如果^写在[ ]里面的话,就代表排除的意思,类似于JavaScript中!(取反)的意思

                var str = "adef";           //字符串中的第二个字符是:dvar re = /a[^ascde]ef/;     //正则中第二个字符是:[^ascde]//如果字符串中的第二个字符,在[^ascde]中没有对应的字符,就匹配,返回true,反之返回falsealert(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+$/greturn 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   :独立部分   (起始,结束,空格)

\B  :非独立部分

var str = "onetwo";    var re = /\bone/;      //代表起始的位置alert(re.test(str));   //truevar str = "onetwo";var re = /\bo\b/;alert(re.test(str))    //falsevar 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));   //truevar str = "onetwo";var re = /\bo\b/;alert(re.test(str))    //falsevar str = "o";var re = /\bo\b/;alert(re.test(str))    //true

原创粉丝点击