JavaScript的正则表达式(二)

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

                //[] 代表的只是一个字符
		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   :独立部分   (起始,结束,空格)

\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




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值