最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • JS正则表达式:RegExp

    正文概述 掘金(sanhuamao)   2021-02-07   421

    正则表达式

    正则表达式是按照一定的规则组成的表达式,用于匹配字符串。该表达式通常由普通字符、元字符其他特殊字符标记字符组成。

    相关概念

    元字符

    元字符在正则表达式中有一种或多种特殊功能:

    JS正则表达式:RegExp

    其他特殊字符

    JS正则表达式:RegExp

    标记字符

    JS正则表达式:RegExp

    实例创建方式

    1. 字面量

    let expression=/pattern/flags
    
    //例:匹配10-19 全局
    let pattern=/1[0-9]/g
    

    双斜杠里面的pattern表示匹配模式,通常由普通字符与元字符组成。双斜杠外面的flags称为标记字符,用于控制正则表达式的行为,可有可没有。


    如果要匹配元字符本身,需要加上反斜杠\转义:

    //匹配第一个数字 全局
    let pattern=/[0-9]/
    //匹配第一个[0-9]
    let pattern=/\[0-9\]/
    

    2. 构造函数

    let expression=new RegExp("pattern","flags")
    
    //例:匹配数字 全局
    let pattern=new RegExp("[0-9]","g")
    

    RegExp可以基于已有的正则表达式实例创建,并修改它们:

    const re1=/cat/g
    const re2=new RegExp(re1)     // "/cat/g"
    const re2=new RegExp(re1,"i") // "/cat/i"
    

    由于RegExp构造函数的参数是字符串,所以如果要匹配元字符本身,需要二次转义:

    //匹配第一个数字
    let pattern=/[0-9]/
    //匹配第一个[0-9]
    let pattern=new RegExp("\\[0-9\\]")
    

    相关例子

    //匹配第一个非数字
    let pattern=/^\d/
    let pattern=/\D/
    
    //匹配所有的数字
    let pattern=/[0-9]/g
    
    //1. 100-200
    let pattern1=/[1][0-9][0-9]/
    //2. 要么是数字、要么是小写字母、要么是大写字母。其中小写字母优先
    let pattern2=/[0-9]|([a-z])|[A-Z]/
    //3. 一个小写字母,有数字(没有也行)
    let pattern3=/[a-z][0-9]*/
    //4. 一个小写字母,小写字母后面至少有一个9
    let pattern4=/[a-z][9]+/
    //5. 小写字母至少出现5-10次
    let pattern5=/[a-z]{5,10}/
    //6. 小写字母至少出现1次以上
    let pattern6=/[a-z]{1,}/
    //7. 以数字开头,以小写字母结尾
    let pattern7=/^[0-9][a-z]$/
    //8. 非数字
    let pattern8=/[^0-9]/
    //9. 特殊字符
    let pattern9=/[^0-9a-zA-Z]/
    

    实例属性

    JS正则表达式:RegExp

    let pattern=/\[0-9\]/g
    pattern.global      //true
    pattern.ignoreCase  //false
    pattern.lastIndex   //0
    pattern.source      //"\[0-9\]"
    pattern.flags       //"g"
    

    实例方法

    JS正则表达式:RegExp

    • test()

      接收一个待匹配字符串,如果该字符串与模式匹配,返回true

      let text="000-00-0000"
      let pattern=/\d{3}-\d{2}-\d{4}/
      pattern.test(test)  //true
      
    • exec()

      接收一个待匹配字符串,如果该字符与模式匹配,返回一个Array实例,该实例包括两个额外属性:indexinput;如果匹配不到,返回null。index表示匹配到的字符串在原始字符串的索引位置;input表示原始字符串。

      如果匹配成功,分为两种情况。如果匹配模式没有捕获组(),则返回一个元素,即匹配到的结果;否则返回多个元素:

      let text="cat bat fat"
      let pattern=/cat/
      pattern.exec(text)  //["cat", index: 0, input: "cat bat fat"]
      
      let pattern=/cat (bat (fat))/
      let pattern=/cat/
      pattern.exec(text)  //["cat bat fat", "bat fat", "fat", index: 0, input: "cat bat fat"]
      

      如果设置全局标记,则每次调用都会向前搜索下一个匹配项;否则永远只返回第一个匹配项。

      let text="cat bat fat"
      let pattern=/.at/
      let matches=pattern.exec(text)
      matches.index       //0
      matches[0]          //"cat"
      pattern.lastIndex   //"0"
      
      let text="cat bat fat"
      let pattern=/.at/g
      let matches=pattern.exec(text)
      matches.index       //0
      matches[0]          //"cat"
      pattern.lastIndex   //"3"
      
      //第二次调用
      matches=pattern.exec(text)
      matches.index       //4
      matches[0]          //"bat"
      pattern.lastIndex   //"7"
      
      //第三次调用
      matches=pattern.exec(text)
      matches.index       //8
      matches[0]          //"fat"
      pattern.lastIndex   //"11"
      
      //第四次调用
      matches=pattern.exec(text) //null
      

    RegExp构造函数属性

    RegExp构造函数本身也有属性,这些属性适用于作用域中所有的正则表达式。这些字符可以提取出exec()test()执行的操作相关的信息。 JS正则表达式:RegExp

    let text="this has been a short summer"
    //搜索后面跟着hort的字符
    let pattern=/(.)hort/g
    if(pattern.test(text)){
      console.log(RegExp.input) //this has been a short summer
      console.log(RegExp.lastMatch) //short
      console.log(RegExp.leftContext) //this has been a 
      console.log(RegExp.rightContext)  // summer
      console.log(RegExp.lastParen) //s
    }
    

    起源地下载网 » JS正则表达式:RegExp

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元