正则表达式

#正则表达式

用来匹配一类数据的模式

语法:

1、new RegExp(n)

n:表示需要匹配的模式

2、/n/

n:表示需要匹配的模式

			var reg1 = new RegExp("a");
			//^,表示匹配以什么开头
			//$,表示匹配以什么结尾的字符串
			var reg2 = /^a$/;
			console.log(reg1);
			var str =  "bacd";
			console.log(reg1.test(str));//true
			console.log(reg2.test(str))//false
			var str1 = "bcd";
			console.log(reg2.test(str1));//false
			var str2 = "abda";
			console.log(reg2.test(str2));//false
			
			var reg =/[0-9]/;
			var str = "123";
			console.log(reg.test(str));//true
			var reg =/^[0-9]$/;
			var str1 = "123";
			console.log(reg.test(str1));//false
			
			//匹配一个四位数的验证码
			// | 表示或
			var reg = /^[0-9][0-9][0-9][0-9]$/
			var reg1 = /^[0|9][0-9][0-9][0-9]$/
			var str ="1234";
			console.log(reg.test(str));//true
			console.log(reg1.test(str));//45
			var str1 ="12346";
			console.log(reg.test(str1));//false
			
			//匹配手机号码
			var reg = /^1[3-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/;
			var str = "13124975877";
			console.log(reg.test(str));//true

#方括号

用于匹配某个范围内的字符

[0-9]:数值类型

[a-zA-Z]:字母类型

[a-z]:小写

[A-Z]:大写字母

[^a-z]:除了小写字母之外的字符 => ^符号在括号里面表示非。

   		var reg =/^[^a-z]$/;
   		var str ="a";
   		console.log(reg.test(str));//false
   		var str1 ="1";
   		console.log(reg.test(str1));//true
   		
   		var str = "今天的天气真好!";
   		 var nstr = str.replace("天","日");
   		console.log(nstr);

修饰符

i:不区分大小写

m:识别换行符

g:代表全局匹配

			var str2 = str.replace(/天/g,"日");
			console.log(str2);
			var str = "hello worLd";
			console.log(str.replace(/l/ig,"z"));//hezzo worzd

元字符

		   相当于
		    ↓

\d:表示一个数字 => [0-9]

\D:表示非数字 => [^0-9]

\w 单词字符 => [a-zA-Z0-9_]

\W 非单词字符 => [^a-zA-Z0-9_]

\s 查找一个空白字符(比如空格,换行符…这些看不见的符号)

\S 非空白字符

\b 单词边界

\B 非单词边界

. 表示任意字符,除了换行符(\n),结束符(\r);

			var reg = /\d/;
			var str = "1234";
			console.log(reg.test(str));//true
			
			var reg =/\D/;//只有存在一个非数值类型字符,则返回true
			var str = "1zs";
			console.log(reg.test(str));
			
			var reg = /\w/;
			var str1 = "天";
			console.log(reg.test(str));//true
			console.log(reg.test(str1));//false
			
			var str = " ";
			var reg = /\s/;
			if(reg.test(str)){
				console.log("请不要输入空格");
			}
			
			var str = "hwow old are you?";
			var reg = /w\b/;//匹配一个在单词右边界上的w
			console.log(str.match(reg));//["w", index: 3, input: "hwow old are you?", groups: undefined]
			console.log(str.replace(/w\b/,"W"))//hwoW old are you?
			
			var str = "hell! how old are youh? what?";
			var reg = /\bh/g;//匹配一个在单词左边界上的h
			console.log(str.replace(reg,"H"));//Hell! How old are you? what?
			console.log(str.replace(/\Bh\B/g,"H"));//hell! how old are youh? wHat?
			
			var reg = /./;
			var srt1 = "12fadad是";
			var str2 = "\n";
			var str3 = "\r啦啦啦啦";
			console.log(reg.test(str1));//true
			console.log(reg.test(str2));//false
			console.log(reg.test(str3));//true

#量词

{n}表示有n个

{n,m}表示有n~m个

{n,}表示大于等于n个

? 表示0个或一个 =>{0,1}

加号 + 表示一个或多个 =>{1,}

表示0个或多个 =>{0,}

			//匹配手机号码
			var reg = /^1[3-9]\d{9}$/;
			var str ="13265973867";
			console.log(reg.test(str));//true
			var reg = /^\d{4,6}$/;
			var str1="1234";
			console.log(reg.test(str1));//true
			var reg =/^\d{6,}$/;
			var str = "12345";
			console.log(reg.test(str));//false
			var reg = /^\d.?$/;//表示匹配数字后面跟着一个或者0个任意字符
			var str = "11";
			console.log(reg.test(str));//true
			var reg = /^\d+$/;//表示匹配一个或多个数字
			var str = "122";
			console.log(reg.test(str));//true
			var reg = /^.*$/;//表示匹配0或多个字符
			var str = "3345bv";
			console.log(reg.test(str));//true

#正则表达式的方法

1、test()用来匹配正则表达式中指定的字符,返回布尔值。

2、exec()匹配字符串中指定的值,并返回该字符和该字符所在的下标值。

注意:该方法只能匹配一次只能获取到第一个目标字符

如果要匹配到所有字符,需要全局匹配然后在进行多次匹配,就能后获取到所有目标字符。

例如

var str = "今天天气晴朗,我们来上课了!";
var reg = /天/g;
console.log(reg.exec(str));//"天", index: 1, input: "今天天气晴朗,我们来上课了!"
console.log(reg.exec(str));//"天", index: 2, input: "今天天气晴朗,我们来上课了!"

3、toString(),不是用来匹配的

返回正则表达的字符串

			var str = "今天天气晴朗,我们来上课了!";
			var reg = /天/g;
			console.log(reg.exec(str));
			console.log(reg.exec(str));
			var reg = /我们来上课了/;
			console.log(reg.toString());//  /我们来上课了/

字符串中具有正则匹配的方法:

1、replace()

2、match():找到一个或多个正则表达的匹配, 返回包含目标字符的一个数组

3、search():检索与正则表达式相匹配的值。返回第一个出现目标元素的下标值

4、split()把字符串分割为字符串数组

			var reg = /天/g;
			console.log(str.match(reg));
			console.log(str.search(reg));
			console.log(str.split(/,/));

高级应用 =>反向引用

如果我们需要用到匹配的数据

可以在匹配模式的数据上添加一个小括号

小括号里面的值可以通过$加数字来拿到第一个括号里面的内容用加数字1,第二个括号里面的内容用数字2,第三个括号…3,以此类推

比如

   			/(.{3})/g =>"$1 "
   		 	/(.{3}(\d))/g => $1 $2
			var str = "123abc789";  //==> 123 abc 789 
			var newstr = str.replace(/(.{3})/g,"$1 ");//123 abc 789 
			console.log(newstr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值