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

前端技术 2023/09/04 JavaScript

正则表达式,又称正规表示法、常规表示法。(英语: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匹配返回的规则:第一个元素为整个的匹配字符串,从第二个参数开始返回模式中每一个()所定义的分组所匹配的字符串。

这里面([^&#]*)返回的就是不以&或#开头的字符串,即后面对应的参数。</p> <p>如果我们将定义的模式修改为[&#63;#&]\" + (user) + \"=([^&#]*),那么exec()后返回的数组就是[&#63;user=Tom, user, Tom]。</p> <p>以上所述是小编给大家介绍的使用JS中的exec()方法构造正则表达式验证,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对phpstudy网站的支持!</p> </div> </section> <script type=\"text/javascript\"> (function() { var s = \"_\" + Math.random().toString(36).slice(2); document.write(\'<div style=\"\" id=\"\' + s + \'\"></div>\'); (window.slotbydup = window.slotbydup || []).push({ id: \"u4263905\", container: s }); })(); </script> <section class=\"xgwz\"> <b>【热门文章】</b> <ul> <li><a href=\"/b.php/69936.html\">HTML5 解析规则分析</a></li><li><a href=\"/b.php/69937.html\">Centos 7.0 系统密码破解图文方法</a></li><li><a href=\"/b.php/69938.html\">C#不同类型的成员变量(字段)的默认值介绍</a></li><li><a href=\"/b.php/69939.html\">PHP使用内置函数生成图片的方法详解</a></li><li><a href=\"/b.php/69940.html\">基于jQuery的ajax方法封装</a></li><li><a href=\"/b.php/69941.html\">jquery控制display属性为none或block</a></li><li><a href=\"/b.php/69942.html\">jQuery学习笔记之 Ajax操作篇(一) - 数据加载</a></li><li><a href=\"/b.php/69943.html\">MySQL 常见错误分析与解决方法</a></li><li><a href=\"/b.php/69944.html\">Android设置TextView首行缩进示例代码</a></li><li><a href=\"/b.php/69945.html\">JS.getTextContent(element,preformatted)使用介绍</a></li><li><a href=\"/b.php/69946.html\">html5 touch事件实现页面上下滑动效果【附代码】</a></li><li><a href=\"/b.php/69947.html\">php环境套包 dedeampz 伪静态设置示例</a></li><li><a href=\"/b.php/69948.html\">用percona-toolkit为MySQL收集系统和性能信息的教程</a></li><li><a href=\"/b.php/69949.html\">Android 游戏引擎libgdx 资源加载进度百分比显示案例分析</a></li><li><a href=\"/b.php/69950.html\">mysql截取函数常用方法使用说明</a></li><li><a href=\"/b.php/69951.html\">Android中EditText如何去除边框添加下划线</a></li><li><a href=\"/b.php/69952.html\">Win 8系统中为IE浏览器添加Flash插件的方法</a></li><li><a href=\"/b.php/69953.html\">数字金额大写转换器制作代码分享(人民币大写转换)</a></li><li><a href=\"/b.php/69954.html\">浅谈Javascript变量作用域问题</a></li><li><a href=\"/b.php/69955.html\">如何禁用ipv6?Linux系统禁用IPv6的详细教程</a></li><li><a href=\"/b.php/69956.html\">php检测iis环境是否支持htaccess的方法</a></li><li><a href=\"/b.php/69957.html\">Win10如何将任意颜色设置为主题色</a></li><li><a href=\"/b.php/69958.html\">深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解</a></li><li><a href=\"/b.php/69959.html\">详解JavaScript中常用的函数类型</a></li></ul> </section> <section class=\"xgwz\"> <b>【热门文章】</b> <ul> <li><a href=\"/c.php/72912.html\">木马年年有,今年特别多啊,要过年了,这木马隐患还没解除,ASP.net 平台如何破?</a></li><li><a href=\"/c.php/72913.html\">社交类产品数据库设计</a></li><li><a href=\"/c.php/72914.html\">python3.5启动报错api-ms-win-crt-runtime丢失</a></li><li><a href=\"/c.php/72915.html\">如何在 Django 的 URL 匹配中获取中文参数?</a></li><li><a href=\"/c.php/72916.html\">px像素的大小跟屏幕的分辨率是否有关?</a></li><li><a href=\"/c.php/72917.html\">写脚手架时,templates.json指定模板其内容为{&quot;tpl&quot;:{}},怎样具体指定项目的目录结构呢?</a></li><li><a href=\"/c.php/72918.html\">网易评论系统盖楼模式的数据表字段设计</a></li><li><a href=\"/c.php/72919.html\">三级联动菜单的数据库表如何设计?</a></li><li><a href=\"/c.php/72920.html\">ThinkPHP在这种情况下该如果导入第三方类库</a></li><li><a href=\"/c.php/72921.html\">用Virtualvenv搭建好的python环境如何用sublime进行设置build</a></li><li><a href=\"/c.php/72922.html\">jquery里面的resolveWith</a></li><li><a href=\"/c.php/72923.html\">c语言,一个连接两字符串的函数。</a></li><li><a href=\"/c.php/72924.html\">Java集合框架中的多态</a></li><li><a href=\"/c.php/72925.html\">压力测试时,客户端创建4万多连接后出错</a></li><li><a href=\"/c.php/72926.html\">tornado 异步数据库orm?</a></li><li><a href=\"/c.php/72927.html\">html中在badge里能否使用filter,不能的话有没有替代方法</a></li><li><a href=\"/c.php/72928.html\">在input和div中使用相同的width和padding样式,长度呈现出差异</a></li><li><a href=\"/c.php/72929.html\">关于 Python 中 bytearray() 的使用场景的问题</a></li><li><a href=\"/c.php/72930.html\">如何判断程序关闭是自己崩溃还是用户主动关闭?</a></li><li><a href=\"/c.php/72931.html\">EF中更新部分字段如何处理?</a></li></ul> </section> <section class=\"cont pl\" id=\"comment\"><b></b> <div id=\"SOHUCS\" sid=\"art_104965\"></div> </section> <div class=\"search\"> <form action=\"http://zhannei.baidu.com/cse/search\" method=\"get\" target=\"_blank\" class=\"bdcs-search-form\" id=\"bdcs-search-form\"> <input name=\"s\" value=\"12351952642737355179\" type=\"hidden\"> <input name=\"entry\" value=\"1\" type=\"hidden\"> <input name=\"ie\" value=\"gbk\" type=\"hidden\"> <input name=\"nsid\" value=\"1\" type=\"hidden\"> <input type=\"text\" placeholder=\"请输入您感兴趣的关键字\" value=\"\" id=\"search_txt1\" maxlength=\"18\" class=\"search_txt\" name=\"q\"> <input class=\"search_btn\" value=\"搜 索\" type=\"submit\"> </form> </div> <nav class=\"nav-foot\"> <ul> <li><a href=\"/jiaotong/huoche/\">火车</a></li> <li><a href=\"/jiaotong/gaotie/\">高铁</a></li> <li><a href=\"/jiaotong/qiche/\">汽车</a></li> <li><a href=\"/jiaotong/gongjiao/\">公交</a></li> <li><a href=\"/jiaotong/zijia/\">自驾</a></li> <li><a href=\"/jiaotong/licheng/\">里程</a></li> <li> <a href=\"/jiaotong/jingdian/\">景点</a></li> <li><a href=\"/jiaotong/gonglue/\">攻略</a></li> <li><a href=\"/jiaotong/wen/\">问路</a></li> <li><a href=\"/\">计算机</a></li> </ul> <ul> <li><a href=\"/\">首页</a></li> <li><a href=\"/jiaotong/huoche/\">火车</a></li> <li><a href=\"/jiaotong/gaotie/\">高铁</a></li> <li><a href=\"/jiaotong/qiche/\">汽车</a></li> <li><a href=\"/jiaotong/gongjiao/\">公交</a></li> </ul> </nav> <footer class=\"footer-min\"> <div class=\"app\"> <a href=\"javascript:void(0)\" class=\"pc\">电脑版</a> - <a href=\"/\">返回首页</a></div> <div class=\"copyright\">Copyright &copy;2017 <a href=\"/\">交通频道</a> All Rights Reserved</div> </footer> <div class=\"clearfix\"></div> <div class=\"asd\"><span id=\"asd-footer\" class=\"jbTestPos\"><script>gx(4);</script></span></div> <script> var path_url=\"/b.php/94072.html\"; </script> <script type=\"text/javascript\" src=\"/img/jquery-1.10.2.min.js\"></script> <script type=\"text/javascript\" src=\"/img/menuclick.js\"></script> <br> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement(\"script\"); hm.src = \"https://hm.baidu.com/hm.js?4e18701aa680bab2e8eb968e32500cf0\"; var s = document.getElementsByTagName(\"script\")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </div> </body> </html>

本文地址:https://www.stayed.cn/item/10654

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。