zoukankan      html  css  js  c++  java
  • 正则表达式

    每次要用正则,第一想法就是先网上搜索有没有现成的表达式,然后再去看相关的正则规则。没有自己的理解,也不方便查阅。这两天网上看了一些相关的技术贴,总结以下一些常用的语法规则。

    一、正则常用规则

    1. 元字符(代表单词的开头或结尾、也就是单词的分界处。元字符中字母大写都表示反义)

    元字符  定义           案例
            匹配单词的开始或结束 /hi/  hi(匹配成功)  history(匹配失败)                        
    . 匹配换行符以外的任意字符         
    *     匹配数量,重复任意次(包括0)   
    +    匹配数量,重复0次或多次   
    匹配数量,重复0次或1次   
    匹配一位数字   
    匹配任意的空白字符(空格、制表符(Tab)、换行符等)   
    w     匹配字母或数字或下划线( 等同于[A-Za-z0-9_] )   
    ^和$   匹配字符串的开始和结束 /^[1-9]{5,12}$/   123456(匹配成功)  a123456(匹配失败)

    注意:如果需要匹配跟元字符相同的字符,需要使用使用转义符"" 。 如:匹配"." : .   

    2. 分支条件(|:类似于逻辑或,匹配时要注意表达式的顺序。)

       例:匹配11位的手机号或者是带4位区号的座机号。

    var reg  = /^1d{10}|0d{3}-d{8}$/ ;   

    3. 分组(():此时的括号表示分组的符号,不是元字符“(”,不需要转义)

       例:匹配有效IP。

    var reg = /^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$/ ;
    // (2[0-4]d|25[0-5]|[01]?dd?).){3} : 三位数或两位数的有效IP匹配三次 , 并且每个段位的ip后面连接小数点 . (元字符,需要转义) 。

    二、正则的定义

    1. var reg = new RegExp("d") ;   // 当正则中需要用到变量的时候,则只能使用这种方式,否则会被当成字符串进行匹配
    2. var reg = /d/ ;         

    三、正则的调用

    1. test() : 匹配成功返回true ,失败false           正则.test(字符串)
    2. search() : 返回符合匹配规则的第一个字母的位置    字符串.search(正则)
    3. match() : 返回符合匹配规则的内容的数组          字符串.match(正则)
    4. replace() : 查找符合正则的内容,并将其替换成对应的字符串
                   返回替换之后的内容    字符串.replace(正则,新的字符串/回调函数)
    5. exec() : 同match

    四、正则实例

    1. 找重复项最多的字符个数

    var str = "skdjkajkkkkkasapoerweriuruqo" ;
    var arr = str.split("");  // 把字符串转换成数组
    str = arr.sort().join("") ; // 数组进行排序再连接成字符串
    console.log( str );  // aaadeeijjkkkkkkkoopqrrrssuuw
    var value = "" ;
    var index = 0 ;
    var reg = /(w)1+/g ;
    str.replace( reg , function($0,$1){
      console.log( $0 );  // aaa ee jj kkkkkkk oo rrr ss uu  每次匹配成功的结果
      console.log( $1 );  // a e j k o r s u  每次匹配成功的结果中的第一个子项
      if( index<$0.length ){
        index = $0.length ;
        value = $1 ;
      }});
    console.log("重复字数最多的是:"+value+",重复次数为"+index +"次"); //重复字数最多的是:k,重复次数为7次

    2. 匹配邮箱 

    var reg = /^w+@[a-z0-9]+(.[a-z]+){1,3}$/ ;
    var str = "18273465468@163.com" ;
    console.log( reg.test(str) );   // true
    

     借鉴博客地址:

    1. http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

    2. http://www.cnblogs.com/moqing/p/5665126.html

  • 相关阅读:
    快速熟悉项目代码
    Hello World
    【java】随机生成6位的数字
    解决字段名与实体类属性名不相同的冲突
    通过eclipse mybatis generater代码生成插件自动生成代码
    自有账户体系对接百度云推送必须要弄懂的问题
    使用jquery获取url及url参数的方法
    Delphi 不使用自带模板创建服务
    Delphi在Listview中加入Edit控件
    动态加载和动态注册类技术的深入探索
  • 原文地址:https://www.cnblogs.com/bian21/p/5760806.html
Copyright © 2011-2022 走看看