如何在javascript中有条件地返回正则表达式匹配? [复制]

Posted

技术标签:

【中文标题】如何在javascript中有条件地返回正则表达式匹配? [复制]【英文标题】:How to return a regex match conditionally in javascript? [duplicate] 【发布时间】:2021-10-15 14:33:15 【问题描述】:

我们怎样才能优雅地返回一个可能的字符串正则表达式匹配而不运行两次匹配?

// Works fine, returns "pdf"
let ext = "file.with.extension.pdf".match(/\.([a-z]+)$/)[1];
// Exception, we'd like just null or ''
let ext = "nofileextension".match(/\.([a-z]+)$/)[1];
// Duplicate execution
let ext = "nofileextension".match(/\.([a-z]+)$/) && "nofileextension".match(/\.([a-z]+)$/)[1];

对于可能返回数组的方法,是否没有可选链接 ()?[1]

let ext = "nofileextension".match(/\.([a-z]+)$/)?[1];

【问题讨论】:

【参考方案1】:

您可以使用?.,然后数组索引只有在对象存在时才会执行:

console.log("document123.pdf".match(/\.([a-z]+)$/)?.[1]);
console.log("nofileextension".match(/\.([a-z]+)$/)?.[1]);

【讨论】:

以上是关于如何在javascript中有条件地返回正则表达式匹配? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在正则表达式Jmeter中无条件地提取值?

易语言正则表达式中,如何匹配多个关键词,例如我要在“你好我是地球人”中匹配“好”和“地”

如何在 Vue 中有条件地添加一个类?

如何在 pySpark 中有效地从字符串数据框中替换多个正则表达式模式的所有实例?

Javascript split() 正则表达式在 Chrome 中返回不需要的逗号

如何在gdbinit函数中有条件地执行命令