使用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 相关文章推荐
摘自百度的图片轮换效果代码
Nov 19 Javascript
javascript 支持ie和firefox杰奇翻页函数
Jul 22 Javascript
探索Emberjs制作一个简单的Todo应用
Nov 07 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
JS实现的Select三级下拉菜单代码
Aug 20 Javascript
JavaScript职责链模式概述
Sep 17 Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 Javascript
jQuery实现文档树效果
Feb 20 Javascript
JavaScript中的高级函数
Jan 04 Javascript
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 Javascript
基于vue.js实现购物车
Jan 15 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
PHP多例模式介绍
2013/06/24 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
Yii学习总结之安装配置
2015/02/22 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
JS画线(实例代码)
2013/11/20 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
jQuery实现动画效果的简单实例
2014/01/27 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
Django之模型层多表操作的实现
2019/01/08 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python右对齐的实例方法
2020/07/05 Python
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
给老婆的婚前保证书
2014/02/01 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
高中生逃课检讨书
2014/10/10 职场文书
主持人大赛开场白
2015/05/29 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
社区服务理念口号
2015/12/25 职场文书
Java 关于String字符串原理上的问题
2022/04/07 Java/Android