项目中遇到一个正则表达式的运用 其实很常用的方法。需求是文件下载(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()方法:是能够支持模式匹配的。
网友评论