JS(七)JS的正则表达式

时间:2022-12-15 15:51:56

一、正则表达式的创建方式

方式1:/正则表达式/模式  重点掌握

                var regx=/[a-z]/;
		var regx=/^[a-z]$/;
		var regx=/^[a-z0-9]+$/i;
		var regx=/^[a-z]{3}$/i;
		var regx=/\b[a-z]{3}\b/g;
		var regx=/\b[a-z]{3}\b/ig;

        注意:不需要双引号括起来;两种模式(i--忽略大小写模式、g--全局模式)

方式2:new RegExp("正则表达式",模式); 了解即可

        var regx=new RegExp("[a-z]","i");

二、正则表达式对象常用的方法

    2.1 test()   

    功能:使用正则对象去匹配字符串 ,如果匹配成功返回ture,否则返回false。

     例1  需求:匹配一个字符

                var regx=/[a-z]/;//定义规则(不用用双引号括起来)(1)
//		var regx=/^[a-z]$/;//定义规则(不用用双引号括起来)(2)
//		var regx=/^[a-z0-9]+$/i;//定义规则(不用用双引号括起来)(3)
//		var regx=/^[a-z]{3}$/i;//定义规则(不用用双引号括起来)(4)
//		var regx=/\b[a-z]{3}\b/g;//定义规则(不用用双引号括起来)(5)
//		var regx=/\b[a-z]{3}\b/ig;//定义规则(不用用双引号括起来)(6)
		var st="heLlo123 ni hao ma ";//待测数据
		var result=regx.test(st);//校验
		alert(result);//true
//		分析:它会在字符串内找,找到符合规则的,就会结束.
//		解决办法:添加(),此时才是佩服一个英文小写字符
//              练习:不区分大小写--+(0个或多个){4}(匹配四个字符)

说明:在(1)的测试结果是true,分析原因:由于没有边界符,当匹配到的时候就会立即返回,同时返回true,如果不匹配就继续

向下查询,如果查找最后,没有查询到则返回false。

解决思路:采用(2)的方式进行匹配,此时才是匹配一个小写的字符(判断要匹配的内容是否是以小写字符开头的字符)

补充:其它方式(3)、(4)、(5)、(6)注意分析结果

    2.2 exec()  

    功能:根据正则表达式去查找字符串符合规则的字符串(内容)

     例2  需求:查找符合要求的单词

//			var regex=/\b[a-z]{3}\b/; //(1)
			var regex=/\b[a-z]{3}\b/g;//(2)
			var str = "da jia hao ming tian xiu xi yi tian gao xing bu";
			var line=null;
			while((line=regex.exec(str))!=null){
				document.write(line+"<br />");
			}

分析:(1)的使用会使程序陷入死循环,由于不是全局查询,它查询到了(此时不是null了)就停止查询了,不再向下查询,永远都

是jia。

解决办法:采用(2)加上全局参数g,查询到了输出,然后会接着往下查询,直到最后没有相匹配的,则是null。

三、字符串中关于正则表达式的方法

(1)match   找到一个或多个正则表达式的匹配;返回的是匹配的值,而不是字符串的位置
(2)replace 替换与正则表达式匹配的子串
(3)split      把字符串分割为字符串数组

                        //(1)功能--查找:找到一个或多个正则表达式的匹配(只要匹配到就返回)
			var s="abGdg".match(/[a-z]+/);//注意参数
			alert(s);
			//(2)功能--替换:替换与正则表达式匹配的子串(这里特殊之处是去掉字符串中的数字)
			var s2="ab123ddddd456cccc".replace(/[0-9]+/g,"");//注意参数
			alert(s2);
			//(3)功能--分割:把字符串分割为字符串数组
			var s3="a=b=c".split("=");//注意参数
			alert(s3);
			alert(s3.length);

四、简单应用

        var str = "hello123";
	var reg = /^[A-Z0-9]+$/i;  //注意加上^和$(开头和结尾)
	alert("匹配吗?"+reg.test(str));	

需求:查找出三个字符组成的单词

var str  ="da jia hao hao xue xi a";
	var reg = /\b[a-z]{3}\b/gi;//注意全文查找加上 g,\b表示一个单词的边界
	var line ="";
	while((line = reg.exec(str))!=null){
		document.write(line+"<br/>")
	}