gpt4 book ai didi

javascript - 需要一个可接受的文件名的正则表达式

转载 作者:行者123 更新时间:2023-11-28 02:51:41 24 4
gpt4 key购买 nike

我正在使用 Fancy Upload 3 和 onSelect 文件,我需要运行检查以确保用户的文件名中没有任何错误字符。我目前正在让人们上传名称中带有象形文字等的文件。

我需要检查文件名是否仅包含:

  1. A-Z
  2. a-z
  3. 0-9
  4. _(下划线)
  5. -(减号)
  6. 空格
  7. ÀÈÌÒÙàèìòùÁÉÍÓÚÝáéíóúý ÊÎÔÛâêîôûÑÕãñõÄËÏÖÜäëïöü(单字节和双字节)

显然你可以看到其中的困难。非英语单字节和双字节字符。

我见过这个:

[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]

还有这个:

[\x80-\xA5]

但是他们都没有完全正确地描述情况。

应该有效的示例:

  1. fást.zip
  2. abc.zip
  3. ABC.zip
  4. Über.zip

不应该起作用的示例:

  1. ΣΣøΔ.zip
  2. ¡哇!.zip
  3. •§ª°¶.zip

以下内容很接近,但我不是 RegEx 专家,甚至不是接近。

var filenameReg = /^[A-Za-z0-9-_]|[\x00A0-\xD7FF\xF900-\xFDCF\xFDF0-\xFFEF]+$/;

提前致谢。

<小时/>

Zafer 的解决方案大部分有效,但它无法捕获所有其他符号,请参见下文。

未捕获:

¡£¢§¶ª«ø¨¥®´åß©¬æ÷µç

抓到:

™∞•–≠'"πˆ†∑œ∂ƒ˙∆˚…≥≤˜∫√≈Ω

正则表达式:

var filenameReg = /^([A-Za-z0-9\-_. ]|[\x00A0-\xD7FF\xF900-\xFDCF\xFDF0-\xFFEF])+$/;

最佳答案

Alternation两者之间character classes (即[abc]|[def])可以简化为单个字符类([abcdef])——第一个可以读作“(a或b或c)或(d或e或f)”;第二个为“(a或b或c或d或e或f)”。可能使您的正则表达式出错的是第一类中的未转义破折号 - 如果您想要文字破折号,它应该是该类中的最后一个字符。

因此我们将修改您的表达式以使其正常工作:

var filenameReg = /^[A-Za-z0-9_\x00A0-\xD7FF\xF900-\xFDCF\xFDF0-\xFFEF-]+$/;

现在的问题是您没有考虑文件扩展名,但这是一个简单的修改(假设您总是获得 .zip 文件):

var filenameReg = /^[A-Za-z0-9_\x00A0-\xD7FF\xF900-\xFDCF\xFDF0-\xFFEF-]+\.zip$/;

如果扩展名不同,请将 zip 替换为其他模式。

关于javascript - 需要一个可接受的文件名的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3631092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com