带扩展名的文件名验证

File name validation with extension

本文关键字:验证 文件名 扩展名      更新时间:2023-09-26

我正在尝试在javascript中验证文件名。

我想要允许的字符是:任何字母、任何数字、下划线和连字符。

如果不满足此条件,我想提醒用户。我以为我有一个正则表达式,可以根据一些在线正则表达式测试器来完成这项工作,但它不起作用。

演示 https://jsfiddle.net/8g65yuu6/

var filename = 'index.html';
if (filename.match(/^(?:['w]':|'')(''[a-z_'-'s0-9'.]+)+'.html$/)) {
  alert('Success: valid');
} else {
  alert('Error: invalid');
}

我希望这会验证 html 文件,条件永远不会满足。

这将起作用,并且要简单得多:

var filename = 'index.html';
if (filename.match(/^(['w'-]+)'.html$/)) {
  alert('Success: valid');
} else {
  alert('Error: invalid');
}

不知道为什么你有 2 个单独的子句:

(?:['w]':|'')

(''[a-z_'-'s0-9'.]+)

此外,最后一个子句之后的+将始终导致其失败

如果您只想检查文件名是否包含有效字符,无论其顺序如何,您可以将正则表达式简化为:

/^(['w'-]+)'.html$/

解释: 捕获一个或多个字符,这些字符是

  • 任何单词字符(与[a-zA-Z0-9_]相同)
  • 连字符-

更新的代码:

var filename = 'index.html';
if (filename.match(/^(['w'-]+)'.html$/)) {
  alert('Success: valid');
} else {
  alert('Error: invalid');
}

正则表达式演示

更新的 jsFiddle