如何匹配 JavaScript 中的文件名模式?

How to match a filename pattern in JavaScript?

我怎样才能匹配一个文件名,这个文件名正好(包括大写)如下format/pattern: yymmdd_Name1_Data_Prices, yymmdd_Name1_Data_Contact, yymmdd_Name1_Data_Address.

我有文件需要上传,文件名保存在数据库中。我想将给定的文件名与数据库中的模式相匹配,但我不确定该怎么做。

您可以使用以下正则表达式。

\b\d{6}(?:_[A-Z][a-z]+){3}\b

Demo

Javascript 的正则表达式引擎执行以下操作。

\b              # match word break
\d{6}           # match 6 digits
(?:             # begin non-capture group
  _[A-Z][a-z]+  # match '_', one upper-case letter, 1+ lower-case letters  
)               # end non-capture group
{3}             # execute non-capture group 3 times
\b              # match word break

匹配前6个字符,对应一个日期,可能比简单匹配6个数字更精确。例如,假设年份是 2000-2020,可以将 \d{6} 替换为

(?:[01]\d|20)(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|30|31)

但它仍然不能确保日期有效。