`
yun342173024
  • 浏览: 72839 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript正则表达式

 
阅读更多
今天学习了正则表达式在javascript中的应用,在这里做个总结。
正则表达式的应用场景

1.用于某种格式的验证,比如验证邮箱,是否是数字等,在web应用程序中可以做前台表单验证

2.替换内容

3.查找内容

正则表达式语法

一 限定符  指定前面的字符或者字符组合连续出现的次数

1.{n} 表示前面的字符连续出现n次,举例说明:a{3}可以匹配daaa 但不能匹配daa。
 
2. {m,n}表示前面的字符或者字符组合至少出现m次最多出现n次,举例说明:a{2,3}可以匹配aa,aaa但不能匹配a。

3.{m,}表示前面的字符或者字符组合至少出现m次,多则不限,举例说明a{2,}可以匹配aa,aaa,aaaa,aaaaaa等。

4.?表示前面的字符出现一次或者零次,举例说明:da?可以匹配d,da.

5.+表示前面的字符或者字符组合至少出现一次,没有上线限制,和前面的{1,}等同。

6.*表示前面的字符出现零次或者多次,没有上线限制。

二 贪婪匹配和非贪婪匹配
  
  1.贪婪匹配 默认情况下正则表达式使用最长匹配原则,例如,要将zoom中的zo?替换成c替换的结果是com不是coom,如果修改成zo*结果是cm
 
  2.非贪婪匹配 当字符“?”紧随其他限定符(*,+,{m},{m,n})时,正则表达式使用最短匹配(也就非贪婪模式)比如 zo+? 匹配zo zo+匹配zoooo。

三 选择匹配符
     选择匹配符就一个“|”,用来匹配两者的一个,举例说明 a|bc匹配a或者bc。

四 分组组合符和反相引用符
  
  分组组合符:将正则表达式某部分组合起来的符号,格式为(pattern),就是用括号把正则表达式包围起来。例如:(abc)de,abc就是一个分组。
 
反相引用符:用与匹配前面的分组组合所匹配的内容的符号,格式为\num,举例说明,要匹配连续五个数字可以用\d{5},但是要匹配连续相等的五个数字,就要用到反相引用符了(\d)\1{4},\1表示组合表达式(\d)匹配的内容,如果不需要引用和检索括号中所匹配的结果内容,可以使用(?:pattern),比如abc(?:y|c),表示不存储组合表达式匹配的结果。

五 特殊符号

1.[...]该符号用来指定可以匹配多个符号中的一个,举例说明[abd]可以匹配a b d 。

2.[^...]加上这个符号,表示匹配除了中括号中出现的字符。举例说明[^abd]匹配除a  b d以外的任意单个字符,如果^没有出现在[后面还表示普通的字符^。

3.[a-z] 表示一个范围,匹配a到z的之间的任意一个字符,如果要匹配-字符,需要对其进行转义[a\-z],还可以将连接符-放到末尾或前面,[a-z-]或者[-a-z]
 
4. \d 表示0-9之间的任意一个数字
 
5. \D \d的反义,匹配除了0-9之间的任意一个字符。
 
6. \s 匹配空行,如\r\n \t 。

7. \S 匹配除空行之外的字符。

8. \w 匹配a-zA-Z0-9_。

9. \W 匹配除了a-zA-Z0-9_之外的字符。

10. . 匹配除换行符(\n)之外的任意字符,如果要匹配任意的字符可以这样写[\s\S]或者 [\d\D]或者[\w\W]要匹配任意连续的两个字符可以写([\s\S])\1。

11. ^ 如果出现在正则表达式第一个位置,表示以那个字符开始,举例说明:^u 匹配us中的u单不匹配you中的u。

12. $放在正则表达式结尾表示以什么结尾,o$匹配zoo中的o不匹配school中的o。

13. \b 单词边界符。

14. 如果要匹配(),[]+,?等这样在正则表达式中有特殊意思的字符,需要进行转义如字符.要写成\.。 

六 正则表达式javascript中的应用

   1. 在javascript中用RegExp对象表示正则表达式对象,要创建一个正则表达式对象在javascript中有两种方法代码如下:
 <script type="text/javascript" >
    var regExp1 = /\d{1,3}/gi;
    var regExp2 = new RegExp("\\d{1,3}");
   
   </script>
 

2. RegExp对象,在javascript中一般用来用作输入验证,它有一个方法test方法可以验证输入字符串是否符合某种格式,返回值为boolean。例如验证一个文本框只能输入数字:
 <script type="text/javascript" >    
    
    var regExp = /^\d+$/g;
    alert(regExp.test("1233"));
    
   </script>


3. String 对象的三个方法
   1. replace(reg,replaceText),它返回一个替换后的字符的串。例子如下,把一个字符串中的数字替换成字符"H"
 <script type="text/javascript" >
   var str = "dd22331ggzz12"  
   var regExp = /\d+?/gi;
   var replaceStr = str.replace(regExp,"H");
   alert(replaceStr); 
   </script>

2. match(regExp)返回一个数组,数组存放的是匹配的内容.例子如下:
 
  
  <script type="text/javascript" >
   var str = "dd22331ggzz12"  
   var regExp = /\d+/gi;
   var arr = str.match(regExp);
   alert(arr.length);
   var len;
   for(var i= 0,len = arr.length;i < len;i++){
     alert(arr[i]);
   }
   </script>   
   


3.split(regExp[,limit])把一个字符串按照一个的规则分开,返回一个数组,接受两个参数,一个是正则表达式对象也可以是正常的字符串,第二个参数是可选的,表示返回数组的大小第二个参数影响返回的数组的大小,比如5表示返回的数组的大小是5,至少匹配四次下:
 <script type="text/javascript" >
  var str = "dd22331ggzz12"  
     var regExp = /\d+/gi;
     var arr = str.split(regExp);//把字符串用数字分开
     alert(arr);
    </script>  
  


最后列举一些长用的正则表达式
1. 匹配空行 /^\s*$/
2. 匹配数字 /\d+/
3. 匹配电子邮件/^[\w-]+@[\w-]+\.com(\.cn)?$/
4. 匹配字符串左右的空格 /(^\s+)|(\s+$)/  
5. 匹配ip地址/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.\d{1,2}|1\d\d|2[0-4]\d|25[0-5]){3}$/
6.手机号码 /^1[358]\d{9}$/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics