美文网首页
js正则表达式 exec()

js正则表达式 exec()

作者: 可可布布 | 来源:发表于2019-12-11 17:15 被阅读0次

    项目中遇到一个正则表达式的运用 其实很常用的方法。需求是文件下载(a链接下载方式),自定义文件下载的名称--名称里包含时间例如20191211 ,但是后端返回的时间是2019-12-11 12:34:12 所以要用正则表达式去匹配。

    原代码片段

    <a :href="isShowUrl(scope.row.fileUrl)"
                   :class="scope.row.status === '2' ? 'isSuccess' : 'faile'"
                   target="_self" :download="'效果统计 ' + getdate(scope.row.createTime) + '.xlsx'">下载</a>
    

    方法

     getdate (date) {
          let newDate = /\d{4}-\d{1,2}-\d{1,2}/g.exec(date)   
    // data   2019-12-11 12:34:12
    // newDate  ["2019-12-11", index: 0, input: "2019-12-11 12:34:12", groups: undefined]
    // index 表示匹配项在字符串中的位置 0
    // input 表示应用正则表达式的字符串 2019-12-11 12:34:12
    // group 捕获组的名称
    // 第一项:表示与整个模式匹配的字符串
    // 其它项: 与模式中的捕获组匹配的字符串
    
          let result = newDate.split('-').join('')
    // 正确的  let result = newDate[0].split('-').join('')
          return result
        }
    

    这样的=结果就报错了


    错误返回结果.png

    一、正则表达式通常用于

    两个字符串方法 : search() 、replace()

    两个正则表达式方法:test() 、exec()

    search()方法:以正则表达式作为参数,返回第一个与之匹配的子串开始的位置,如果没有任何与之匹配的子串,它返回-1。

    replace()方法:执行检索和替换操作,它的第一个参数是正则表达式,第二个参数是要进行替换的字符串或者闭包。

    test() 方法:用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

    exec()方法:用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

    match()方法:唯一一个参数是正则表达式,它的行为取决于这个正则表达式的标志,如果正则表达式包含了标志g,它的返回值就是包含了出现在字符串中 匹配的数组。如果该正则表达式不包含标志g,它也返回一个数组,它的第一个元素是匹配的字符串,余下的元素则是正则表达式中的各个分组。注意:在全局检索模式下,match() 即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。如果您需要这些全局检索的信息,可以使用 RegExp.exec()。

    split()方法:是能够支持模式匹配的。

    相关文章

      网友评论

          本文标题:js正则表达式 exec()

          本文链接:https://www.haomeiwen.com/subject/dvnogctx.html