🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
  正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 ## 一、创建   创建正则表达式和创建字符串相似,有以下两种方法。  方法一:NEW运算符 ~~~ var box = new RegExp("Box", 'ig'); ~~~  方法二:字面量 ~~~ var box=new RegExp/box/ig; ~~~ 模式参数 | 参数 | 含义 | |-----|-----| | i | 忽略大小写 | | g | 全局匹配 | | m | 多行匹配 | ## 二、测试   RegExp对象提供两个测试方法:  方法一:test() 在字符串中查找是否存在指定的正则表达式,返回值为布尔值,如果匹配到了就返回True,如果不存在就返回False。  方法二:exec() 如果执行成功,就返回包含该查找字符串的相关信息数组。如果失败返回NULL。  实例1:   匹配信息为box,i参数是不区分大小写。在str变量存放的字符串中查找,返回的变量为True。 ~~~ var pattern = new RegExp('box', 'i'); var str = 'This is a Box!'; alert(pattern.test(str)); ~~~ ![](https://box.kancloud.cn/2016-08-19_57b6bd26bdb1b.jpg)  实例2:   用exec()方法返回的是匹配到的源字符串中的内容,如果没有匹配到则返回NULL. ~~~ var pattern = new RegExp('box', 'i'); var str = 'This is a Box!'; alert(pattern.exec(str)); ~~~ ![](https://box.kancloud.cn/2016-08-19_57b6bd26ec3ff.jpg) ## 三、其他方法: ![](https://box.kancloud.cn/2016-08-19_57b6bd2710741.jpg)  1、match()方法 ~~~ var pattern = /Box/ig; var str = 'This is a big Box!That is a beautiful box'; alert(str.match(pattern)); ~~~   返回为:Box,box  2、replace()方法 ~~~ var pattern = /Box/ig; var str = 'This is a big Box!That is a beautiful box'; alert(str.replace(pattern,'Apple')); ~~~   返回为:This is a big Apple!That is a beautiful Apple  3、search()方法 ~~~ var pattern = /Box/ig; var str = 'This is a big Box!That is a beautiful box'; alert(str.search(pattern)); ~~~   返回为:查到的位置,如果查不到就返回-1.  4、split()方法 ~~~ var pattern = /Box/ig; var str = 'This is a big Box!That is a beautiful box'; alert(str.split(pattern)); ~~~   返回为:拆分成的字符串数组。This is a big ,!That is a beautiful , ## 四、获取控制   正则表达式元字符是包含特殊含义的字符,它们有一些特殊功能,可以改变匹配模式的方式。做个简单的例子。  实例:   简单的电子邮件验证: ~~~ var pa = /^([\w\.\-]+)@([\w\-]+)\.([\w]{2,4})$/; var str = 'zhou@163.com'; alert(pa.test(str)); ~~~   ()的作用是分组模式,{2,4}的意思是匹配分组里的字符串2-4次。   正则量词的贪婪与惰性:   贪婪量词:先看整个字符串是否匹配,如果不匹配就把最后一个字符去掉在进行匹配,不匹配继续去掉最后一个字符,指导找到一个匹配或者不剩任何字符才停止。   惰性量词:先看第一个字符串是否匹配,如果第一个不匹配就在加入第二个字符串依此类推,指导找到一个匹配或者不剩任何字符才停止,贪婪量词与贪婪量词的方法正好相反.  实例一:   ?号关闭了贪婪匹配,只替换了字符串中的第一个字符a. ~~~ var pattern = /[a-z]+?/; var str = 'abcdefghijklmnopqrstuvwxyz'; var result = str.replace(pattern, 'YYY'); alert(result); ~~~   返回值为;YYYbcdefghijklmnopqrstuvwxyz  实例二:   g参数开启的全局,禁止了贪婪。 ~~~ var pattern = /8(.+?)8/g; var str = 'This is 8google8,That is 8google8,There is 8google8 '; var result = str.replace(pattern, '<strong>$1</strong>'); document.write(result); ~~~ ## 五、总结:   假设用户在填写HTML表单的时候,需要写姓名,年龄,性别,E-Mail等,在提交到服务器之前,在前端先验证一遍。看看用户输入的信息是否符合规定。这种客户端验证的方法,可以节省大量的服务器系统资源,获得更好的用户体验。