正则的理解和应用

最近复习JavaScript发现正则表达式原来如此的重要,但是什么是正则呢?现在就让我们重新了解一下正则的概念及用法。

1、什么是正则
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

2、一般的 应用场景
1)对表单域项目(用户名、密码、邮箱、qq号码、手机等等)进行验证
2)网络爬虫(一个网站到另一个网站的页面上去获取对方的相关信息)
3)内容替换、获取
4) 手机号替换:替换前:13412345678 替换后 134****5678
5) 敏感词替换:
例如:
原字符串:发发达中国辅个钓鱼岛地方规划导共产党
替换后:发发达xxx辅xxx地方规划导xxx
使用最多的是:表单数据的验证.

3、正则的创建
1)字面量创建
语法:var regexp = /正则表达式/修饰符;
注意:一定要加 // , 不需要加引号
例:正则匹配hello
var reg = /hello/;
2)直接实例化
语法:var regexp = new RegExp(“正则表达式”,修饰符);
例:var reg = new RegExp(‘hello’)
以对象的方式创建:需要加单双引号,但是不要加/ /

4、 修饰符说明

标志                 说明                
i                  忽略大小写
g                  全局匹配 
gi                 全局匹配+忽略大小写 

例: reg = /hello/g; 匹配全局hello
reg1 = /Hello/i 匹配时不区分大小写

5、RegExp对象方法(使用正则对象调用)

1)test()方法
    判断正则表达式是否匹配成功
    成功返回true,失败返回false
	    例1:  下述古诗中是否含有“乘风破浪”?
				//创建字符串
				var str = '乘风破浪会有时 直挂云帆济沧海';
			 	//var obj = new RegExp('乘风破浪');
			 	var obj = /乘风破浪/;
				var ret =     obj.test(str);
				document.write(ret);
				
2) exec方法
 匹配符合正则表达式条件的数据
 成功返回数组
 失败返回null
	例1:匹配如下字符串中的js ?
					//创建字符串
					var str = 'js离离原上js草,一岁一枯荣。野火烧不尽,春风吹又生js。远芳侵古道,js晴翠接荒城。又送王孙去,萋萋满别情.';
					//创建正则表达式对象
					//var obj = new RegExp('js','g');
					 var obj = /js/g;
					//调用exec方法匹配数据(拓展,看一下效果)
					 document.write(obj.exec(str));
					    var row;
						while(row = obj.exec(str)) {
						document.write(row);
					}
					
3)search() 方法
   语法:字符串对象.search(待查找的字符串|正则)
   作用:用于搜索字符串中指定的元素
   返回:返回符合条件的第一个元素下标,没找到返回-1
		例1:使用正则搜索字符串中dream
		使用正则表达式搜索 "I have a  dream!" 字符串
		var str = "I have a  dream!"; 
		var n = str.search(/dream/);
		例2:直接使用字符串做参数
		search() 方法使用字符串
		search 方法可使用字符串作为参数。字符串参数会转换为正则表达式:
		实例
		检索字符串中 "dream" 的子串:
		    var str = 'Ihaveadream';
		    var res = str.search('dream');
		    console.log(res)
		    
4)match()方法
 语法:字符串对象.match(待匹配的字符串|正则表达式)
 作用:匹配符合条件的内容
 返回:返回一个数组
		例1: 在字符串中查找 "ain":
		var str="The rain in SPAIN stays mainly in the plain";  
		var n=str.match(/ain/g);
		输出数组结果值:
		 ain,ain,ain 
		 
5)replace() 方法** 
 语法:字符串对象.replace(待匹配的字符串|正则表达式,替换的内容)
 作用:用于替换字符串中的数据
 返回:返回新的字符串(替换后的字符串)
		例1: 替换目标字符串,将8换成6
			var str = 'js8真厉害88';
			console.log(str.replace(/8/g, 6)); 
		例2:查找表单输入字符串中的敏感字符'国军',有则替换为*
		<input type="text" placeholder="请输入文字" id="content" value="" /><br/>
		<input type="button" value="检测" id="check" /><br/>
				//首先获取节点
		        var chk = document.getElementById('check');  
		        // 检测是否有数字
		        chk.onclick = function(){
		             var con = document.getElementById('content').value;
		             // 注意加g的作用
		             var reg = /国军/g;  
		             console.log(con.replace(reg,*));
		        }

6、正则语法

1)正则字符类
	元字符                   说明                                                                
	[a-z]                 匹配a-z任意一个字符                                     
	[A-Z]                 匹配A-Z任意一个字符                                     
	[a-zA-Z]              匹配26个英文字母(大小写)                         
	[0-9]                 匹配一个数字                                                  
	[0-9a-zA-Z_]          匹配一个字符可以是数字、字母和下划线       
	[^0-9]                匹配非数字                                                      
	[^a-zA-Z]             匹配非字母                                                      

2)常用字符类(元字符)
	元字符                说明                                                                         
	 \d              匹配数字相当于 [0-9]                                              
	 \D              匹配任意非数字的字符  [^0-9]                                 
	 \w              匹配字母或数字或下划线   [0-9a-zA-Z_]                 
	 \W              匹配任意不是字母,数字,下划线  [^0-9a-zA-Z_]  
	 \s              匹配任意的空白符                                                    
	 \S              匹配任意不是空白符的字符                                     
	 .               匹配除换行符以外的任意单个字符                           
	 ^               表示匹配行首的文本(以谁开始)                                
	 $               表示匹配行尾的文本(以谁结束)                                 

3)重复字符(背)(限定符:量词,数量限定)
	 限定符                 说明                                                                  
	 *                   重复零次或更多次                                             
	 +                   重复一次或更多次                                             
	 ?                   重复零次或一次                                                 
	 {n}                 重复n次                                                             
	 {n,}                重复n次或更多次,最少出现n次                         
	 {n,m}               重复n到m次                                                      
	 []                  匹配字符组内的字符 [abc]                                 
	 ( str1 l str2 )     匹配字符串str1或者str2  
	 
 例如:
	1).邮政编码检测
	规律:都是6位,以数字开头和结尾
			邮政编码
			var str = '012132';
			var reg = /^\d{6}$/;
			console.log(reg.test(str))	
	2).文件格式检测
	        var str='hello world.txt';
			var reg=/\.(txt|doc)$/;
	    	console.log(reg.test(str))
	注意  .在js中有特殊作用,  使用 \将其转义为普通字符 .
	3).字符串首部去除空格
			删除空格
			var str = "   hello  world   ";
			var reg = /\s+/g;  //空格至少出现一次,全局匹配
			var reg = /^\s+/;  // 以空格开头,至少出现一次
			var reg = /\s+$/;  // 空格至少出现一次,以空格结尾
			console.log(str.replace(reg,""))
	4).邮箱地址检测
	 邮箱的规则:数字+字母,3~15位 @ 字母2~9位 . 字母2~3
			var str = "chengfeng123@1000phone.com";
			var reg = /^[a-z\d]{3,15}@[a-z0-9]{2,9}\.[a-z]{2,3}$/;
			console.log(reg.test(str));

7、常用定位符
^ 限定行首数据,以…开头
$ 限定行尾数据,以…结尾
例:判断一个字符串中是以数字开头的
reg = /^\d/;
判断字符串是否以数字结尾
reg = /\d$/

8、分支条件的 “| ”

	例1:jpg|png  判断图片格式是否合法
			 var str = "xxx.jpg";
			//先判断一种情况
			 var regexp = /^.+\.jpg$|^\.png$/;
			 var regexp = /^.+\.(jpg|png)$/;
			//'\.'是把”.“给转义了,只是一个普通的”.",没有任何意义。
			
	例2:判断图片是否是xxx.jpg或者xxx.png结尾的
		      var regexp = /^.+\.(jpg|png)$/;
		      var str = 'aa.jpg';
		      console.log(regexp.test(str));

另外,正则表达式在JavaScript中有多中应用,例如手机号检测、身份证检测、中文检测、用户名检测、字符串过滤等等,要想熟练的掌握正则还需要多加练习才能在工作中不会错误百出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值