带扩展名的文件名验证

时间:2016-02-02 14:36:34

标签: javascript jquery regex

我正在尝试在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文件,这个条件永远不会满足。

2 个答案:

答案 0 :(得分:2)

这样可行,而且更简单:

var filename = 'index.html';

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

不确定为什么你有2个单独的条款:

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

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

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

答案 1 :(得分:0)

如果您只是想检查文件名是否包含有效字符,无论他们的订单如何,您都可以将正则表达式简化为:

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

说明:  捕获一个或多个字符

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

更新代码:

var filename = 'index.html';

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

Demo of the regex

Updated jsFiddle