js、jsa正则表达式应用大全

function 陈表达太强了(){
	//网上整理了一份大佬们的笔记,修改一下真是通俗易懂,牛批
	//Chen1198061299
}


function 正则校验是否包含(){

	var reg=/[123]/				//正则表达式 跟var reg=new RegExp('[123]');是一样的效果
	var str='456'				//字符串
	var result=reg.test(str)	//获取校验结果
	console.log(result)//flase

}



function 正则search查找匹配的位置(){
	//验证方法 找到返回匹配的字符串的位置下标 找不到返回-1
	//在字符串中找到满足正则表达式的那一部分
	
	var reg=/\d/   //匹配阿拉伯数字
	var str="abcdefg3sgbh"
	var res=str.search(reg) 
	console.log(res) //7

}



function 正则exec匹配获取集合(){
	//用法:正则表达式.exec(字符串)
	//字符串中满足正则表达式的部分提取出来
	//遇到满足条件的就返回,所以只返回4,找到一个就停止匹配,返回匹配到对于的结果
	//exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。 正则表达式提供的方法
	
	var reg=/\d/  			//提取所有连续数字就\d+
	var str="abcd456efg"
	var res=reg.exec(str)
	alert(res[0])
	console.log(res)//返回一个数组,内容是4
	
}



function 正则match查找匹配的1个结果(){
	//用法:字符串.match(正则表达式)
	//match() 方法检索返回一个字符串匹配正则表达式的结果。 字符串提供的方法
	//匹配符合正则表达式的【一个】结果
	var reg=/\d/
	var str="abcd456efg"
	var res=str.match(reg) //字符串中满足表达式的部分提取出来
	
	console.log(res) 
	alert(res[0])
}



function 正则替换数据(){
	//用法:字符串.replace(正则表达式,新的内容)
	//replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果pattern是字符串,则仅替换第一个匹配项。字符串提供的方法
	//如下:将正则表达式匹配的结果替换为a,这里表达式是\d,只匹配一次,得到一个数字,只要匹配到符合规则的就返回
	var reg=/\d/
	var str="11123bcd"
	var res=str.replace(reg,"a") //将数字换为a
	console.log(res)//a1123bcd 只要匹配到符合规则的就返回
	
}



function 正则范围条件匹配(){
	
	let text = 'a1B2d3X4Z5'
	let reg=/[a-zA-Z]/
	text.replace(reg,'Q')//Q1Q3Q4Q5
	console.log(text.replace(reg,'Q'))
	
}




function 正则字符类取反匹配(){
	//很多时候碰到这么一种情况,即不想匹配某些字符,其他都匹配。此时,可以使用字符类取反——使用元字符^,创建反向类,即不属于某类的内容
	//[^abc]表示不是字符a或b或c的内容

	let reg=/[^abc]/g
	let text='a1b2c3d4e5'
	console.log(text.replace(reg,'X')) //输出aXbXcXdXeX

}



function 正则全局匹配(){
	//在正常情况下,正则匹配到第一个匹配项则停止,并且默认大小写敏感,如果想修改默认选项,则需要修饰符。
	//g:global全文搜索
	var reg=/l/g  //加上g标签表示全文搜索
	let text='hello'
	var a=text.replace(reg,'f')
	console.log(a)//输出结果为:heffo (所有的 l 都换成了 f )
	
}



function 正则区分大小写全局匹配(){
	//g:global全文搜索
	var reg=new RegExp('l','g');
	var a='helloHELLO'.replace(reg,'f')
	console.log(a)//输出结果为:heffoHELLO

}

function 正则忽略大小写全局匹配(){
	
	//g:global全文搜索
	//i:ignore case 忽略大小写
	var reg=new RegExp('l','gi');
	var a='helloHELLO'.replace(reg,'f')
	console.log(a)//输出结果为:heffoHELLO

}




function 正则单行搜索匹配(){
	
	var reg=new RegExp('good')
	var str='so good\n so good'
	var result=str.replace(reg,'hi')
	console.log(result)
	//结果为:
	//so hi
	//so good
	//只给第一行匹配了
	
}


function 正则多行搜索匹配(){
	
	//g:全局
	//m:multiple lines 多行搜索
	var reg=new RegExp('good','gm')//加上m标签表示多行匹配
	var str='so good\n so good'
	var result=str.replace(reg,'hi')
	console.log(result)
	//结果为:
	//so hi
	//so hi 

}



function 正则贪婪模式(){
	
	//可以看到结果是将123456 六个数字替换成了X,所以我们可以得到,正常模式下,正则表达式会尽可能多的匹配。正常情况下,正则表达式采用贪婪模式,即,尽可能多的匹配。
	var str="12345678"
	var reg=/\d{3,6}/g
	console.log(str.replace(reg,'X'))  //X78
	
}

function 正则非贪婪模式(){
	
	//一但成功匹配不再继续尝试,这就是非贪婪模式。只需要在量词后加上?即可
	var str="12345678"
	var reg=/\d{3,6}?/g		//如果表达式加g就全局满足3位数的都替换为X,不加g就只替换一次就结束
	console.log(str.replace(reg,'X'))  //X45678
	
	//无g:输出X45678
	//有g:输出XX78
}




function 正则分组匹配模式(){
	
	//在使用正则表达式的时候会想要匹配一串字符串连续出现多次的情况,使用()可以达到分组的功能
	//例如:(hello){3}
	//使用符号 | (或)实现选择的功能
	var str='12341235'
	let reg=/123(4|5|6)/g		//匹配123 后面是4或5
	
	//遍历匹配结果
	let result = "";
	while(result = reg.exec(str)) {
		console.log(result[0]);		//匹配得到的结果
		console.log(result[1]);		//正则表达式匹配得到结果的参数
	}	

}




function 正则反向引用$n模式(){
	
	//将一种格式的时间字符串:yyyy-MM-DD转为MM/DD/yyyy类型格式字符串。
	//由于年月日是不固定的,没法直接转换为固定数值。这时我们可以使用反向引用解决这个问题。
	//利用$n,n代表着分组的序号,序号是从1开始的。 重要: $n是指正则表达式中第n个括号的正则表达式匹配的结果  ,正则表达式有多少个括号,n就最大是多少
	let text='2022-02-23'
	let reg=/(\d{4})-(\d{2})-(\d{2})/
	
	let res=text.replace(reg,'$3/$2/$1')//将yyyy-MM-DD转换为MM/DD/yyyy		$3代表第三个括号匹配得到的日
	console.log(res)
	
	res=text.replace(reg,'$1/$2/$3')//将yyyy-MM-DD转换为MM/DD/yyyy		$1代表正则第一个括号匹配到的年份
	console.log(res)
}



function 正则匹配开头和结尾(){
	// ^|$ 正则表达式是指开头或结尾, replace替换为❀
	alert('1234'.replace(/^|$/g, '❀'));// "❀1234❀"		
}




function 正则设置千位分隔符(){
	// 每3位替换加一个分隔符,由于^后没内容,即空,$前也没内容,表示空
	alert('12345678'.replace(/(?!^)(?=(\d{3})+$)/g, ','));// "12,345,678"
}








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Excel_VBA创维大表格จุ๊บ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值