如何在javascript中为文件夹名称创建正则表达式?

时间:2015-08-10 10:31:04

标签: javascript jquery regex validation

我想验证文件夹名称,它不应该以数字或任何特殊字符开头,我不确定文件夹名称中允许使用哪些特殊符号,请提供帮助。

这是我的功能

function validateFileName() { 
    var re = /[^a-zA-Z0-9\-]/;

      if(!re.test($('#new_folder_name').value)) {
          alert("Error: Input contains invalid characters!");
          $('#new_folder_name').focus();
          return false;
        }

        // validation was successful
        return true;
      }

3 个答案:

答案 0 :(得分:2)

根据Naming Files, path and Namespaces article by MSDN

保留以下特殊字符:

< (less than)
> (greater than)
: (colon)
" (double quote)
/ (forward slash)
\ (backslash)
| (vertical bar or pipe)
? (question mark)
* (asterisk)

以下关键字也被保留

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. 

哪种情况不敏感。

因此,考虑到这些事实,可能的正则表达式可以是:

[^<>:"/\|?*(?:aux|con|nul|prn|com[1-9]|lpt[1-9])]

所以你的转换函数将是

function validateFileName() { 
    var re = /[^<>:"/\|?*(?:aux|con|nul|prn|com[1-9]|lpt[1-9])]/;

      if(!re.test($('#new_folder_name').value)) {
          alert("Error: Input contains invalid characters!");
          $('#new_folder_name').focus();
          return false;
        }

        // validation was successful
        return true;
      }

答案 1 :(得分:1)

只需检查以字母开头的文件夹名称,但不以 开头。 (点)

var re = /^[a-zA-Z].*/;
re.test(folder_name);

仅当文件夹名称以字母开头时才会返回。

答案 2 :(得分:1)

在C#中,有一个返回list of invalid path symbols的函数。此外,Naming Files, Paths, and Namespaces列出了一些不能在文件夹和文件名中使用的保留字符。以下是涵盖所有这些限制的正则表达式:

var RealInvalidPathChars = /[<>:"\/\\|?*\x00-\x1F]/;

您可以测试字符串中的任何符号,它将是无效路径。

此外,还有一个不能用作文件夹名称的保留字列表,我们也可以在正则表达式中使用它们:

/^(?:aux|con|clock\$|nul|prn|com[1-9]|lpt[1-9])$/i

如果此正则表达式检查返回true,则路径无效。

这是一个结合了所有这些内容的片段:

$( "#new_folder_name" ).submit(function( event ) {
    var rx = /[<>:"\/\\|?*\x00-\x1F]|^(?:aux|con|clock\$|nul|prn|com[1-9]|lpt[1-9])$/i;
    if(rx.test($( "input:first" ).val())) {
      alert("Error: Input contains invalid characters!");
   }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="new_folder_name">
  <input type="text" value="<INVALID>">
  <input type="submit" value="Go">
</form>