使用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 相关文章推荐
jQuery文本框(input textare)事件绑定方法教程
Apr 24 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
jquery选择器原理介绍($()使用方法)
Mar 25 Javascript
javascript中replace( )方法的使用
Apr 24 Javascript
javascript实现C语言经典程序题
Nov 29 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
Aug 02 Javascript
基于angularJS的表单验证指令介绍
Oct 21 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
Jan 05 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
基于Fixed定位的框选功能的实现代码
May 13 Javascript
JQuery插件tablesorter表格排序实现过程解析
May 28 jQuery
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 和 COM
2006/10/09 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
用一段js程序来实现动画功能
2007/03/06 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
python3中set(集合)的语法总结分享
2017/03/24 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python中关于for循环的碎碎念
2017/06/30 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
医院搬迁方案
2014/06/14 职场文书
三年级学生评语大全
2014/12/26 职场文书
学习十八大的感悟
2015/08/11 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android