首页 > 代码库 > JavaScript入门篇之正则表达式

JavaScript入门篇之正则表达式

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



JavaScript入门篇之正则表达式