javascript - 获取无法读取正则表达式中 null 的属性 '0'

标签 javascript regex

我想从 url 获取文件名。我正在这样做:

console.log(url)
const filename = url.match(/([^\/]+)(?=\.\w+$)/)[0]
return filename

但是我收到TypeError: Cannot read property '0' of null。这很奇怪,因为 console.log(url) 输出 文件:http://ac-0uhksb6K.clouddn.com/9710016c8dfcf6ae1e9d.jpg?imageView2/2/w/4096/h/2048/q/100/format/jpg

可能是什么问题?

最佳答案

您的正则表达式希望文件名及其扩展名成为 URL 的最后部分,而问题中的 URL 也包含查询参数。为了考虑到这些,请在前瞻中添加 (?:$|\?) 替换:

[^\/]+(?=\.\w+(?:$|\?))

注意:捕获组是多余的,因此也将其删除。

演示:https://regex101.com/r/nX2rP5/3

关于javascript - 获取无法读取正则表达式中 null 的属性 '0',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035044/

相关文章:

Javascript:如何打印 $_SESSION 数组中的值?

javascript - 在 Chrome 扩展中使用 Google API Spreadsheet JS 删除值

javascript - NodeList 事件不起作用

javascript - 从该字符串中提取该特定数值的正则表达式是什么?

javascript - 根据 CGI HTTP_HOST 确定 CSS 文件中的文件路径

javascript:html5 模式正则表达式问题

python - 新行前任意数量单词的正则表达式

javascript - 正则表达式将字符串与开头的(逗号分隔的)数字匹配并拆分为数字和其余部分?

javascript - 正则表达式 exec() 不返回字符串中的第一次出现,但返回后续匹配项

c++ - C++ 中的正则表达式