微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JS正则表达式常见用法实例详解

本文实例讲述了JS正则表达式常见用法分享给大家供大家参考,具体如下:

前言:正则表达式(regular expression)反反复复学了多次,学了又忘,忘了又学,这次打算把基本的东西都整理出来,加强记忆,也方便下次查询

学习正则表达式之前首先需要掌握记忆这些基本概念:

1.元字符:(.,\w,\W,\d,\D,\s,/S,^,$,)

ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: none transparent scroll repeat 0% 0%; padding-top: 0px"> 一个非单词边界一个数字,等价于[0-9]一个数字,等价于[^0-9]一个单字字符(字母、数字或者下划线)等价于[A-Za-z0-9_],例如,/\w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。 \W匹配一个非单字字符。等价于[^A-Za-z0-9_],/\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。一个非单字字符。等价于[^A-Za-z0-9_],/\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。 我们发现\W加大写字母都是表示相反的意思。

2.分组符([],(),{});

ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">字符 含义
ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"> ottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; background: none transparent scroll repeat 0% 0%; padding-top: 0px"> 次数了。eg: (\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})。一个字符集合。匹配方括号的中任意字符,包括转义序列。你可以使用破折号(-)来指定一个字符范围。对于点(.)和星号(*)这样的特殊符号在一个字符集中没有特殊的意义。他们不必进行转义,不过转义也是起作用的。例如,[abcd] 和[a-d]是一样的。他们都匹配"brisket"中得‘b',也都匹配“city”中的‘c'。/[a-z.]+/ 和/[\w.]+/都匹配“test.i.ng”中得所有字符。

3.修饰符(i,g,m);

ottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 3px; margin: 0px; padding-left: 3px; padding-right: 3px; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid; padding-top: 3px">字符 含义
字符

4.量词(*,?,+,-,{n,m},?=n,?!=n);

含义
字符 数量的不包含换行的字符。等价于{0,}一个表达式1次或者多次。等价于 {1,}。一个表达式0次或者1次。等价于 {0,1}。一个数字仅仅当这个数字后面没有跟小数点的时候。正则表达式/\d+(?!\.)/.exec("3.141")匹配‘141'但是不是‘3.141'

实例解析:

rush:js;"> var reg = /\(?0\d{2}[) -]?\d{8}/

“(”和“)”也是元字符,后面的分组节里会提到,所以在这里需要使用转义。 这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。我们对它进行一些分析吧:首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。

以下通过实例来讲解RegExp:

需求一:在一句话英文中匹配一个hi的单词。

rush:js;"> var str = 'Hi RegExp I love you so much Hi Hi hi'; var reg = new RegExp("\\bhi\\b","gi");//g是一个修饰符,表示全局匹配。\b是一个元字符,代表单词边界,匹配单词的开头和结尾。 //直接量语法: reg2 = /\bhi\b/gi; console.log(str.match(reg2));//['hi','hi','hi'] //升级 //匹配hi后面不远处跟着一个lucy var strlc = /\bhi\b.*\blucy\b/; var luch = 'hi welcome to beijing lucy!!!'; console.log(luch.match(strlc));

需求二:在一句话英文中匹配一个hi的单词。

rush:js;"> var reg = /0\d\d\d-\d\d\d\d\d\d\d\d/;//\d代表一个数字,等价于[0-9],\D匹配一个非数字字符,等价于[^0-9] var tel = "0123-887523146"; console.log(tel.match(reg));//0123-88752314; //这个连续写多次的方法很笨哎,所以引进了变量。 regTel = /0\d{3}-\d{8}/; console.log(tel.match(regTel));//0123-88752314;

需求三:写一个清除字符串前后空格的正则表达式。

rush:js;"> String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g,"");} var str2 = " hi space "//这里前后共有两个空格 console.log(str2.length);//14 console.log(str2.trim().length);//8 console.log(str2.trim());//hi space

需求四:匹配一个邮箱。

rush:js;"> var eReg = /\S*@\S*\.\S*/; console.log(eReg.test('873619879@qq.com'))//true

参考文章:

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions#

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:

正则表达式在线生成工具:

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《

希望本文所述对大家JavaScript程序设计有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


含义