牛骨文教育服务平台(让学习变的简单)

  正则表达式,又称正规表示法、常规表示法(英语: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));

 实例2:

  用exec()方法返回的是匹配到的源字符串中的内容,如果没有匹配到则返回NULL.

           var pattern = new RegExp("box", "i");
           var str = "This is a Box!";        
           alert(pattern.exec(str));

三、其他方法:

 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等,在提交到服务器之前,在前端先验证一遍。看看用户输入的信息是否符合规定。这种客户端验证的方法,可以节省大量的服务器系统资源,获得更好的用户体验。