javascript - 带扩展名的文件名验证

标签 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 文件,但条件从未满足。

最佳答案

这可行,而且简单得多:

var filename = 'index.html';

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

不确定为什么有两个单独的子句:

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

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

此外,最后一个子句后面的 + 总是会导致它失败

关于javascript - 带扩展名的文件名验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35156277/

相关文章:

javascript - keyCode 只是给出...错误的响应

javascript - 是否可以使用三元运算符执行多个操作

javascript - "use strict"对于旧版浏览器

jquery - 将 Rails 应用加载到现有的 HTML5 页面中(使用 JQuery 或 iFrame)

ruby - 正则表达式第一次不起作用

javascript - 如何动态插入新的顶栏并将所有原始内容向下移动?

javascript - 我应该如何根据时间删除这些 <li> 元素?

jquery - jquery缩放效果后div移动

regex - 是否存在 submatch(0) 在 vi​​m 正则表达式替换中不起作用的情况?

sql - Oracle SQL - 编辑自由文本叙述中除最后四位数字之外的所有不同长度数字的多个出现