使用JS中的exec()方法构造正则表达式验证


Posted in Javascript onAugust 01, 2016

正则表达式,又称正规表示法、常规表示法。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

一、Javascript中的正则表达式

在Javascript中,可以使用RegExp对象构造正则表达。我们需要新建一个实例化的RegExp()对象,可以传入两个参数:第一个参数是匹配的模式,第二个参数是一个可选项,可以传入三种参数。i表示不区分大小写,g表示全局匹配,即匹配所有的符合条件的字符串,m表示执行多次匹配。实例如下:

var reg = new RegExp("Hello", "i"); //表示匹配字符串中的Hello字符串,并且不区分大小写。

二、使用exec进行模式匹配

RegExp中有一个方法可以进行模式匹配并返回结果:exec()。该方法非常重要,基本是使用js进行模式匹配必用的函数。然而该函数的返回值有很多人并不清楚,因此在实际使用的时候经常会出错。在这里系统的介绍一些exec()的使用方法。

exec()的基本格式为:RegExpObject.exec(string),其中RegExpObject为设置好的正则匹配对象,string为待匹配的字符串。如果成功匹配,则返回一个数组;如果没有成功匹配的字符串部分,则返回null。

这里的重点就在于这个数组。数组返回的到底是什么呢?可以看一下下面这个实验.

var re = new RegExp("[?#&]" + user + "=([^&#]*)", "i")

这段代码进行了一个url的匹配,可以用来获得user=后面的参数部分,那么如果使用一个url并且用这个模式进行exec操作,结果会返回什么呢?比如我们有如下

www.qq.com?user=Tom&psw=123456

exec返回的数组结果为:[?user=Tom, Tom]。可以看到返回数组的第一个元素就是整个的匹配模式所匹配到的字符串,而第二个匹配到的字符恰好是参数值。

这是exec匹配返回的规则:第一个元素为整个的匹配字符串,从第二个参数开始返回模式中每一个()所定义的分组所匹配的字符串。

这里面([^&#]*)返回的就是不以&或#开头的字符串,即后面对应的参数。

如果我们将定义的模式修改为[?#&]" + (user) + "=([^&#]*),那么exec()后返回的数组就是[?user=Tom, user, Tom]。

以上所述是小编给大家介绍的使用JS中的exec()方法构造正则表达式验证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Array.slice()与Array.splice()的返回值类型
Oct 09 Javascript
javascript中的array数组使用技巧
Jan 31 Javascript
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 Javascript
JQUERY dialog的用法详细解析
Dec 19 Javascript
js中switch case循环实例代码
Dec 30 Javascript
javascript生成随机大小写字母的方法
Feb 20 Javascript
详解JavaScript逻辑And运算符
Dec 04 Javascript
JS中artdialog弹出框控件之提交表单思路详解
Apr 18 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
JavaScript实现英语单词题库
Dec 24 Javascript
javascript创建含数字字母的随机字符串方法总结
Aug 01 #Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 #Javascript
jQuery实现的简单百分比进度条效果示例
Aug 01 #Javascript
AngularJS基础 ng-focus 指令简单示例
Aug 01 #Javascript
JavaScript中的对象继承关系
Aug 01 #Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 #Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 #Javascript
You might like
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
php抓取页面的几种方法详解
2013/06/17 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
Angular开发实践之服务端渲染
2018/03/29 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
JS桶排序的简单理解与实现方法示例
2019/11/25 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
用Python输出一个杨辉三角的例子
2014/06/13 Python
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
selenium切换标签页解决get超时问题的完整代码
2020/08/30 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
超市后勤自我鉴定
2014/01/17 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
简单租房协议书
2014/04/09 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js