Javascript 正则表达式:允许在excel文件名中使用逗号
我有读取excel文件内容的JavaScript代码。 第一步是将regex分配给名为regex的变量Javascript 正则表达式:允许在excel文件名中使用逗号,javascript,regex,Javascript,Regex,我有读取excel文件内容的JavaScript代码。 第一步是将regex分配给名为regex的变量 var regex = /^([a-zA-Z0-9\s_!()\\.\-:])+(.xls|.xlsx)$/; 然后出现一些编程,如: if (regex.test($scope.SelectedFile.name.toLowerCase())) { 有时,用户提交excel文件时,会在文件名中加逗号,这会破坏正则表达式 我想寻求帮助,这样我就可以学习如何对当前的正则表达式进行这个小的修
var regex = /^([a-zA-Z0-9\s_!()\\.\-:])+(.xls|.xlsx)$/;
然后出现一些编程,如:
if (regex.test($scope.SelectedFile.name.toLowerCase())) {
有时,用户提交excel文件时,会在文件名中加逗号,这会破坏正则表达式
我想寻求帮助,这样我就可以学习如何对当前的正则表达式进行这个小的修改(除了逗号的问题外,它一直工作得很好),而不会因为缺乏经验而破坏它
任何帮助都是好的
谢谢,,
Erasmo假定文件名的第一个字符不应该像名称的其余部分那样灵活,并且解决了一些其他问题,解决方案应该更像这样:
var regex = /^[a-z0-9][-a-z0-9\x20_!()\.:,]*\.xlsx?$/i;
如果只需将i
标志(不区分大小写)放在正则表达式的末尾,则不必执行a-z和a-z,也不必在代码中使用toLowerCase()
空格字符(\x20
)现在是唯一允许的空白。您可以只键入一个空格,但是在正则表达式中使用普通空格对代码的读者来说并不总是清楚的
您不需要分别测试xls
和xlxs
,因为xlsx?
在xls
之后添加一个(并且只有一个)x
是可选的
如果希望文件名以字母或数字以外的字符开头,请修改第一个字符类
我还删除了不必要的括号。这是一个破正则表达式,因为匹配扩展名的点(
(.xls |.xlsx)
)需要反斜杠转义,或者它们匹配任何字符,而不仅仅是点。感谢您的观察。你认为你能帮我纠正这一点,并将其改为允许逗号吗?首先需要的是一个简洁的声明,说明什么应该被视为有效或无效的文件名,因为正如给定的那样,它允许一些疯狂的东西,比如制表符,以a开头的:,等等。例如,如果你允许逗号,逗号可以是第一个字符吗?文件名会改变,因为目前没有关于文件名应该如何命名的命名约定。我正试图向权力表明这一点的重要性,但目前没有答案。同时,我需要能够接受名称中任何位置有昏迷的文件。示例:EDD-2021年1月13日议程列表.xlsx感谢您的帮助。我已经添加了更改,并将开始测试它们。代码现在是这样读的:var regex=/^[a-z0-9][a-z0-9\x20_!()\:,]*\.xlsx?$/i;如果(regex.test($scope.SelectedFile.name)){这看起来像是我正确地实现了它吗?特别是删除了toLowerCase()的部分。这看起来是正确的。