【问题标题】:jQuery using regex to check for valid filenamejQuery 使用正则表达式检查有效的文件名
【发布时间】:2012-12-31 17:10:20
【问题描述】:

我有一个表单,让用户在下载文件时输入他们想要的带有扩展名的文件名,但我需要在客户端进行验证(不包含 [^/?*:;{}\\]+\\.[^/?*:;{}\\]+ 之类的东西)。文件名不需要包含扩展名,但如果他们愿意,可以。我发现了这个:Validate a file name on Windows 但我对 jQuery 不够熟练,无法使其正常工作。

【问题讨论】:

  • 这与 jQuery 本身没有任何关系,它是一个 javascript 问题。给你,正则表达式的 MDN 文档developer.mozilla.org/en-US/docs/JavaScript/Reference/…
  • 我建议使用您允许的字符的白名单(而不是黑名单),这样管理起来会更容易一些。
  • @DavidThomas 任何合理的文件系统都有黑名单,而不是白名单。有些甚至都没有。如果文件系统支持,Linux 将允许您在文件名中插入控制字符。
  • @Jan:我并没有说这是文件系统中最常见的实现方式,但我确实相信,出于验证目的,白名单更易于管理。但是,当然,这是个人选择,两种方法(至少在我看来)都是完全有效的。

标签: javascript regex


【解决方案1】:

正如我的评论所说,它不是 jQuery 问题,而是你所追求的 javascript 问题。

你可以走两条路,最简单的是

var myString = "hello world";
var regexp = /w+/
var match = regexp.exec(myString);
console.log(myString); //will print the world "hello"

另一个将使用Regexp Object

不要使用“literal regexp”,如果您同意这样称呼它,请使用对象

var re = new RegExp("\\w+");
var match = re.exec(myString);
console.log(myString); //will print the world "hello"

这个方便的网站是 Ruby 正则表达式的主要网站,但它是创建正则表达式的绝佳工具

Rubular

【讨论】:

  • /w+/(包含单词字符)不是有效文件名的良好标准。
  • 没错,但我的目标不是一个完整的解决方案,而是一个正确方向的指针,但我可以编辑我的答案。
  • 我没有完全使用这个答案,但就像聚光灯说我曾经指导我一样。谢谢。
【解决方案2】:

您可以为此尝试以下代码。如果有效,这将返回文件名。否则它将返回 null

var filename = ''; // enter your file name here
alert(filename.match(/^\s*[a-z-._\d,\s]+\s*$/i))

如果您想排除某些字符,请在方括号内提及这些字符,如下所示

/^[^<>%$]*$/

【讨论】:

  • příliš žluťoučký kůň.texťák 在您看来不是有效的文件名?我的文件系统 (NTFS@W7) 不一样 :-)
  • 看起来像是一种编造的语言... ;)
  • @limelights 我对匈牙利语的看法也一样 :-) 请参阅 en.wikipedia.org/wiki/List_of_pangrams#Czech 以验证它是一种真正的语言 :-)
  • @limelights "Jó foxim és don Quijote húszwattos lámpánál ülve egy pár bűvös cipőt készít。" ——“我的好猎狐犬和堂吉诃德正在用 20 瓦的灯做一双魔法鞋。”在匈牙利:-)
  • 编辑了我的代码。如果您只想提及一些要排除的字符,可以使用我的回答中提到的内容。
猜你喜欢
  • 2010-11-05
  • 1970-01-01
  • 2011-03-27
  • 2010-10-18
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多