前端javaScript 之【正则表达式】
现在很多做前端的同学对于正则已经远远的抛于脑后,这篇文章简单写一下正则,帮助大家回顾,同时也是小白学习的好地方。
正则表达式的基本表示:这个表很重要,争取多看几遍,最好背下来。
^ // 说明字符串的开始 $ // 说明字符串的结束 \b // 表示一个单词的开始或结束 \w // 表示:数字、字母、下划线 \s // 表示任意一个空白字符 \d // 可以代表任意一个数字 . // 点代表一个非换行的任意字符 [] // 字符类 ,例如[a-z],注意:反过来[z-a]会报错 * // 表示0~无穷多次 {n} // 表示重复n次 {n,m} // 表示重复n~m次 {n,} // 表示重复n~无穷多次 + // 代表重复1~无穷多次 ? // 代表重复0或1次 ,可用于懒惰匹配 | // 或 () // 分组 // avillin@163.com // wx:VillinWeChat
定义一个正则表达式两种方法:
1. 放在/ /
之中来书写
2. var regExp = new RegExp('正则表达式')
两种方法一样,本次先用第一种方法举例
例如:var num = /^\d{3}$/
num值验证的是三位数字,^
代表字符串开始$
代表字符串结束,\d
代表数字,{3}
重复3次。
验证正则test():可用test()方法来验证是否含有符合要求的字符,返回值为布尔值(true/false),如:num.test(123)
我们来写一个验证手机号输入正确与否的案例:
开发思考:
- 目前手机号都是以1开头,所以1要写成固定。
- 第二位目前手机号可以是345678都可以。
- 剩下的九位数,0~9都可以,所以
\d
重复9次。
可以写成:/^1[345678]\d{9}$/
[]是字符类,可以验证是否存在[]中所拥有的字符。
标签部分
<input type="number" id="tel"><span>请输入正确的手机号码</span>
js部分
// 取到input输入的值,丢失焦点后,开始验证手机号码,用onblur document.querySelector(#tel).onblur = function() { var val = this.value // 取到input输入的value值 var mobileReg = /^1[345678]\d{9}$/ //验证手机号正则 if(mobileReg.test(val)){ // 此时验证成功,写下想要执行的方法 }else{ // 此时验证失败,写下要执行的方法 } }
以上就是简单的正则表达式,如果你有兴趣可以简单的进阶一下:
刚才的例子是判断一个字符串是否符合要求,但正则不仅仅这么简单,还可以进行分组提取
。
正则给我们提供了一个exec()
方法,如果匹配成功,返回一个数组Array
,匹配失败会返回null
我们可以利用此方法提取电话号的区号和本地号码,如:
var tel = '0434-123456'; // 简单写一个电话号 var reg = /^(\d{3}|\d{4})-(\d{0,})$/ // 用()进行分组,区号可以是3位或4位,号码0~n个数值 var resule = reg.exec(tel) // 结果赋值
上述的reg
所包含的正则带有()
,可以为其分组
,(\d{3}|\d{4})
为一组,(\d{0,})
为一组。
成功打印出来,返回数组格式,这样我们就可以轻松拿到想要的号段。
console.log(resule) // ["0434-123456", "0434", "123456"]
正则捕获
正则表达式中如果有分组,那么分组匹配的内容,就会被保存到RegExp.$1-RegExp.$99中,这种现象叫做正则表达式的捕获
。
可能会有些不清楚,解释一下:RegExp
代表的就是正则,$1-$99
代表的是捕获到的每个字段,存在1-99当中。
那么RegExp.$1
代表的就是第一个字段,RegExp.$2
代表的是第二个字段。
举个例子,还拿刚才的电话号来说,他有分组,一个是区号,一个是本地号码,打印出来是一个数组,那么我们就可以通过RegExp.$1
和RegExp.$2
捕获到这两个分组的值。
var tel = '0434-123456'; // 简单写一个电话号 var reg = /^(\d{3}|\d{4})-(\d{0,})$/ // 用()进行分组,区号可以是3位或4位,号码0~n个数值 reg.exec(tel) console.log(RegExp.$1) // "0434" console.log(RegExp.$2) // "123456"
正则修饰符
常用的修饰符有三个,分别为
i
:忽略大小写m
:执行多次g
:全局匹配
用法:
如:
var num = /\d{3}/g
var num = new RegExp('\\d{3}', 'g');
这三个修饰符放在后边就可以。
仔细看会发现new
构造出的正则中,\b
,写成了\\b
,这个不是错误,编辑器会转义成\
用g
举例说明:
var str = '小白,13987654321234567;小林,13898765433;小张,13798765432!!!'; var reg = /1\d{10}/g; var arr = str.match(reg) console.log(arr); // ["13987654321", "13898765433", "13798765432"]
此时会打印出三个数值,如果不加全局修饰符g
,会打印出一条。
举例中的match()
方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
上述例子全局找到符合正则reg的的字段。
与此类似的方法还有:
replace()
split()
search()
举一个split()
例子:
普通js方法
'a b c'.split(' '); // ['a', 'b', '', '', 'c']
空格也会打印出来,加正则看一下:
'a b c'.split(/\s+/); // ['a', 'b', 'c']
再例如:
'a,b, c d'.split(/[\s\,]+/); // ['a', 'b', 'c', 'd']
以上就是今天介绍的正则验证,还有关于更多的知识,感兴趣的同学可以去官网查阅,正则的功能很强大,不仅局限于这些……
感兴趣的同学可以评论交流,或与我联系。
e-mail:avillin@163.com
weChat:VillinWeChat
若您有收获,也可请博主喝茶:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
爬虫技术的门道,这篇文章总结的最全
Web是一个开放的平台,这也奠定了Web从90年代初诞生直至今日将近30年来蓬勃的发展。然而,正所谓成也萧何败也萧何,开放的特型、搜索引擎以及简单易学的HTML、CSS技术使得Web成为了互联网领域里最为流行和成熟的信息传播媒介;但如今作为商业化软件,Web这个平台上的内容信息的版权却毫无保证,因为相比软件客户端而言,你的网页中的内容可以被很低成本、很低的技术门槛实现出的一些抓取程序获取到,这也就是这一系列文章将要探讨的话题—— 网络爬虫 。 有很多人认为Web应当始终遵循开放的精神,呈现在页面中的信息应当毫无保留地分享给整个互联网。然而我认为,在IT行业发展至今天,Web已经不再是当年那个和PDF一争高下的所谓 “超文本”信息载体 了,它已经是以一种 轻量级客户端软件 的意识形态的存在了。而商业软件发展到今天,Web也不得不面对知识产权保护的问题,试想如果原创的高质量内容得不到保护,抄袭和盗版横行网络世界,这其实对Web生态的良性发展是不利的,也很难鼓励更多的优质原创内容的生产。 未授权的爬虫抓取程序是危害Web原创内容生态的一大元凶,因此要保护网站的内容,首先就要考虑如何反爬虫。 ...
- 下一篇
你见过微信侧滑返回的联动效果,但开门效果、百叶窗效果见过吗?
SmartSwipe是一个Android侧滑处理框架,它封装了对控件侧滑事件(上/下/左/右4个方向滑动的手势事件)的捕获、分发及多点交替滑动的处理,基于SmartSwipe我们可以为控件添加各种你想要的侧滑效果。 先来看看它能做些什么吧! 如果已经了解SmartSwipe的功能,只是想了解他的实现原理 可跳过第一节,直接看第二节的原理介绍 一、 用法及演示 1.1 一行代码实现全局侧滑返回 //仿手机QQ的手势滑动返回 SmartSwipeBack.activityStayBack(application, null); //仿微信带联动效果的透明侧滑返回 SmartSwipeBack.activitySlidingBack(application, null); //侧滑开门样式关闭activity SmartS
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8