You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js v18.16.1正则表达式匹配异常问题咨询

问题分析与解决

这不是Node.js的Bug,是你的正则表达式逻辑不符合预期导致的。

原因拆解

你的正则表达式/\d*?,\d*?,.*?\./的匹配逻辑是:

  • \d*?:非贪婪匹配0个或多个数字(重点是允许匹配0个数字)
  • 接着匹配逗号,
  • 再非贪婪匹配0个或多个数字\d*?
  • 接着匹配逗号,
  • 最后非贪婪匹配任意字符直到遇到.

在目标字符串'Bub,160,20221219_120814672_iOS.png'中,存在完全符合该模式的子串:

  • \d*?匹配0个数字(跳过前面的Bub字符),匹配第一个逗号,
  • \d*?匹配160(因后续需要匹配逗号,非贪婪模式会回溯匹配足够数字以满足规则)
  • 匹配第二个逗号,
  • .*?匹配到第一个.为止,即20221219_120814672_iOS
  • 最后匹配.

所以正则会找到该子串,返回true。

修正方案

如果你想验证整个字符串是否符合「数字,数字,任意字符.后缀」的格式,需要给正则加上开头和结尾锚定,同时把\d*?改为\d+(确保匹配至少一个数字,而非0个):

/^\d+,\d+,.*\.$/

用这个正则测试目标字符串'Bub,160,20221219_120814672_iOS.png'会返回false,符合你的预期。

内容的提问来源于stack exchange,提问作者user3805852

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:08:23