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

    javascript中采用RegExp对象表示正则表达式。

    而RegExp对象一共有3个方法, 他们分别是:

    1、compile

    2、exec

    3、test

    那么这三个方法到底是怎么用的呢?

    首先,compile没有什么用,它只能在多次正则匹配的时候提高些许效率,先不去考虑。

    下面说说exec,它返回找到的指定的值,这个值在字符串中的位置,以及整个字符串。如果找不到,返回null。

    1 var pattern = new RegExp('man', 'g');
    2 var str1 = "i am a man"; 3 var str2 = pattern.exec(str1);
    4 console.log('str2----->', str2); //[ 'man', index: 7, input: 'i am a man' ]

     好吧,这很简单,下面看看test()方法。

    test方法其实也很简单,它只返回true 或者是 false。

    var pattern = new RegExp('man', 'g');
    var str1 = "i am a man"; var str2 = pattern.test(str1);
    console.log(
    'str2----->', str2); //true

    es5 以前, RegExp所有的方法就这三个。普通的string也有直接的正则方法。

    1. search 用来查找字符串

        用法: str.search( 'xxxx' )  

        返回:找到就返回位置,找不到返回-1。

    2. replace 用来替换字符串

       用法:str.replace( 'string in str' , 'target string' )

       返回:找到返回置换成功的字符串,找不到返回原来的字符串。

    3. match 用来查找匹配的一个或者多个字符串。

       用法:' me and me and me '.match(/me/g)

       返回:[ 'me' , 'me' , 'me'] 

       当然match 也可以单个找,去掉g 就行了

    4. split 用来将字符串以 xx 分割开来

       用法:' .exe,.zip,.tar,.tar.gz '.split( "," )

       返回:[ "exe", "zip", "tar", "tar.gz" ] 非常好用^ ^

    es5里面有三个RegExp修饰符,它们分别是

    1.   g:  匹配全局的符合条件的字符串

    2.    i:  不区分大小写匹配

    3.   m: multiline 进行多行匹配

    下面说说  g  i 和  普通模式区别,所谓普通模式,就是指没有写任何修饰符的模式:

    1 console.log('葫芦娃, 葫芦娃, 一根藤上七朵花'.match(/葫芦娃/));  //[ '葫芦娃', index: 0, input: '葫芦娃, 葫芦娃, 一根藤上七朵花' ]
    2 console.log('葫芦娃, 葫芦娃, 一根藤上七朵花'.match(/葫芦娃/g));  //[ '葫芦娃', '葫芦娃' ]
    3 
    4 console.log('huluwa, HULUWA, yi gen teng shang qi duo hua'.match(/huluwa/g));  //[ 'huluwa' ]
    5 console.log('huluwa, HULUWA, yi gen teng shang qi duo hua'.match(/huluwa/ig));  //[ 'huluwa', 'HULUWA' ]

    看代码相当清除。至于之后一行为什么用  ig  联合的格式呢?因为只使用  i  会只找第一个开始匹配到的。想要匹配全局,必须使用  g  。

    在es6的版本中,又增加了新的修饰符,它们分别是:

    1.  u :  含义为“Unicode模式”,用来正确处理大于uFFFF的Unicode字符。也就是说,会正确处理四个字节的UTF-16编码。

    2.  y :  通常叫做  “粘黏” 修饰符。功能基本和  g  修饰符一样, 最大的差别在于: g用来匹配所有,但是每次都从头开始匹配, 而  y  修饰符

         每次匹配, 从剩余的字符串中开始匹配。babel-node执行  y  修饰符的时候都会报错,没法进行测验了。今后补上。

    参考:

    http://www.w3schools.com/jsref/jsref_obj_regexp.asp

    http://es6.ruanyifeng.com/#docs/regex

  • 相关阅读:
    学习一波cmd
    青春,就是用來懷念的
    菜鸟的 linux 学习笔记 -- OOM
    python 获取本机 IP
    win8防火墙配置出站规则禁止QQ访问
    netsh配置Windows防火墙(advfirewall)
    TCP/IP协议
    TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
    Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
    Photoshop  cs6 快捷键命令大全
  • 原文地址:https://www.cnblogs.com/lout/p/6087141.html
Copyright © 2011-2022 走看看