正则表达式使用示例详解
正则表达式(RegularExpression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
下面通过实例代码介绍下正则表达式使用
//一个数据类型,记录文本规则,一些事先定义好的一些特殊字符,对字符串的过滤逻辑
//表单验证账号长度,字母或数字组合,高级搜索
//特点,不仅js有;极简的方式操作字符串;灵活,功能强大
//正则表达式大全
varpatt1=newRegExp("e"); document.write(patt1.test("Thebestthingsinlifearefree"));
/*是否带有小数*/
functionisDecimal(strValue){ varobjRegExp=/^\d+\.\d+$/; returnobjRegExp.test(strValue); }
/*校验是否中文名称组成*/
functionischina(str){ varreg=/^[\u4E00-\u9FA5]{2,4}$/;/*定义验证表达式*/ returnreg.test(str);/*进行验证*/ }
/*校验是否全由8位数字组成*/
functionisStudentNo(str){ varreg=/^[0-9]{8}$/;/*定义验证表达式*/ returnreg.test(str);/*进行验证*/ } vararr=newArray(); varreg=newRegExp(/\d/);
//表示匹配数字
reg=reg.test("jndwjdw"); console.log(reg);
//正则对象。test(需要验证的字符串)
//字面量声明
varreg2=/男|女/;
//有没有其中一个
varreg=reg2.test("呦呦哟偶女"); console.log(reg); console.log(/男|女/.test("哈迪哈迪哈女"));
//语法
//.test();正则表达式检测某段字符串
//预定义类
console.log(/./.test("\r"));//除了回车和换行外的任意字符 console.log(/\d/.test("123"));//检测是不是数字 console.log(/\D/.test("sh"));//非数字字符,只要不是数字就true,只要有一个就是true console.log(/\s/.test("\r"));//只要有不可见就true\r\n\f\h\两个空字符串拼接是false console.log(/\S/.test("ah7"));//只要有可见字符就对 console.log(/\w/.test("b-8"));//所有字母数字和下短线_,只要有就是对短线 console.log(/\W/.test(("bg8-@")));//true//只要有非单词字符就是对
//自定义类,没有\
console.log(/d/.test("123"));//检测这段里面有不有d这个字// console.log(/yskma/.test("yskmama"));//true//检测这段字符串包不包含yskma,不能断开不能中间穿插别的 console.log(/yskmama/.test("ysk"));//false//或和优先级 console.log(/ysk|mama/.test("ysk"));//true console.log(/ys(k|m)a/.test("ysk"));//false//检测这段字符串中有不有yska或者ysma console.log(/ys(k|m)a/.test("yskma"));//false//检测这段字符串中有不有yska或者ysma
//简单类[]代表一个字符
console.log(/[abc]/.test("gbhigf"));//true//只要出现abc中的任意一个就是对 console.log(/y[abc]z/.test("yaz"));//true//包含yz,并选一个a console.log(/y[abc]z/.test("yabcz"));//false//abc只能要一个
//负向类[^]取反
console.log(/[^abc]/.test("a"));//false//除了括号外的内容才是对,有就是错,不能有括号内的 console.log(/[^abc]/.test("af"));//true//除了括号外的内容才是对,有就是错,不能有括号内的
//范围类
console.log(/[0-9]/.test("b8jg"));//true
//组合类,组合起来就是组合类,自定义类
//^边界,以。。开头
//$以。。结尾
//^bc$严格匹配
//.回车和换行以外的
console.log(/^6a/.test("6akjjkak"));//true console.log(/^6.a/.test("6akjjkak"));//false console.log(/[.]{8}/.test("6akjjkak"));//false,当前"."就是代表字符串".",此处没有8个".",所以false; console.log(/ac$/.test("6akjjkakac"));//true//ac结尾 console.log(/^6a$/.test("6a"));//true console.log(/^\d$/.test("9"));//true//只能出现一次 console.log(/^abc\d$/.test("abc7"));//true//只能出现一次
//量词:?0||1次;+前面的>=1次;*>=0次
console.log(/^colo*r$/.test("color"));//true console.log(/^colo+r$/.test("color"));//true console.log(/^colo?r$/.test("color"));//true console.log(/^colo?r$/.test("colr"));//true console.log(/^colo?r$/.test("coloor"));//false console.log(/^colo*r$/.test("colooooooor"));//true
//量词,{}前面出现的:。。{n}n次;{n,}>=n;{n,m}...>=n..<=m
//*{0,}..?{0,1}....+{1,}
//括号总结{}次数;[]一个;()一组,分组
//转Unicode:escape("你好")-----Ununicod("u%hkkblpp%^Vhk")
//所有汉字在一到与之间
console.log(/[\u4e00-\u9fa5]/.test("哈")); console.log(/[\u4e00-\u9fa5]{3}/.test("哈你好"));
//字符串替换
varstr="abcde"; console.log(str.replace("a","b"));//bbcde console.log(str.replace(/a/g,"b"));//bbcde
//换成句号
varstr="a,b,c,d,e"; varstr2=str.replace(/,/g,".");//g是替换全部 console.log(str2);
//修改成绩
varstr="a,b,c,70,90"; varstr2=str.replace(/\d{1,}/g,"100");//g是替换全部 console.log(str2);//吧,.都改成。 varstr="a,b,c,70,90."; varstr2=str.replace(/[,,.]/g,"。");//g是替换全部 console.log(str2); varstra="abc" functionMyTirm(stra){ varstr3=stra.replace(/^\s+|\s+$/g,"");//去掉前后空格空格换成空字符串 returnstr3; } varstr2=MyTirm(stra); console.log("=="+str2+"==");
//想要的字符提取出来,提取邮箱//来不及写
//math,提取符合要求的元素
//分组提取,提取邮箱的每一个部分
RegExp.$1,RegExp.$2,RegExp.$3
//检索字符indexof();lastindexof();返回下标
varstr="张三:1000,李四:5000,王五:8000。"; vararr=str.match(/\d+/g); console.log(arr);//math返回数组,提取元素
//exec只取一个,math可以取全部的
//正则对象:test,exec........字符串:math,spilt,search,
//用某个字符分隔字符串
varstr="123123@xx.com,fangfang@valuedopinions.cn286669312@qq.com2、emailenglish@emailenglish.englishtown.com286669312@qq.com..."; vararr=str.match(/\w+@\w+(\.\w+)+/g); console.log(arr);
//6分组提取
//提取email中的每一部分 varstr="123123@xx.com"; varreg=/(\w+)@(\w+)\.(\w+)(\.\w+)?/; vararray=str.match(reg);//获取分组的数据()是分组 console.log(RegExp.$1);//123123 console.log(RegExp.$2);//xx console.log(RegExp.$3);//com//分组练习 varstr="5=a,6=b,7=c"; str=str.replace(/(\d)=(\w)/g,"$2====$1");//吧567分3组,吧abc分3组,2组在前面,1组在后面 console.log(str);
//i忽略大小写
//g全局匹配
//控制字符串相关方法
//1、正则对象的testexec
//2、字符串的replacesearchmatchsplit
//用法:
console.log(/\d/.test("123")); console.log(/[\u4e00-\u9fa5]{3}/.test("哈你好")); //除了.test和search方法能直接执行,math,replace,split,exec都需要数组接收返回值 varstr="abc100,ccc200,ddd300"; vararr=/\d+/.exec(str); console.log(arr+"这儿");//100//只能匹配一项,可以用在分组匹配 vararr=str.match(/\d+/g); console.log(arr); varstr="abc100ccc200ddd300"; vararr=str.split(/\d+/); console.log(arr); varstr="哈哈哈哈,100分";//检索里面数字出现的下标 console.log(str.search(/\d+/)); varstr="abcdebfg"; varstrNew=str.replace("b","d"); console.log(strNew); console.log(str); varv=2 newRegExp("^\\d+"+v+"$").test(12)//true
总结
以上所述是小编给大家介绍的正则表达式使用示例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!