我想验证文件夹名称,它不应该以数字或任何特殊字符开头,我不确定文件夹名称中允许使用哪些特殊符号,请提供帮助。
这是我的功能
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;
}
答案 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>