我必须验证本地文件夹路径,其格式如下:.. \ sentinel \ log。
对于C:\ sentinel \ log,我有旧的正则表达式(/[\w]:\.*/))。我需要接受这条道路。
得到以下表达var pathRE = new RegExp(“/^((../ | [a-zA-Z0-9 _ / - \])*。[a-zA-Z0-9])”);错误: SyntaxError:unterminated parenthetical
当我执行时抛出此错误
我附上了我试过的代码
function checkFolderpath(path) {
try {
//var pathRE = new RegExp(/[\w]:\\.*/);
var pathRE = new RegExp("/^((\.\./|[a-zA-Z0-9_/\-\\])*\.[a-zA-Z0-9])");
if (pathRE.test(path)) {
$("#spanloggererror").html("");
return true;
}
else {
$("#spanloggererror").html(resx_Invalid_Loggerpath);
valtemp = 1;
}
return false;
}
catch (err) {
alert(err.Message);
}
请建议我如何解决问题。
编辑:
路径值:.. \ Sentinel \ log
答案 0 :(得分:5)
你的正则表达式应该像这样构造:
var pathRE = /^((..\/|[a-zA-Z0-9_/-\\])*.[a-zA-Z0-9])/;
您真正需要使用RegExp构造函数的唯一时间是动态地从单独的部分构建正则表达式。使用本机正则表达式语法时,必须小心在表达式(/
)中引用正斜杠字符。您不必在[ ]
组内引用它们,但您需要加倍反斜杠。
该正则表达式与..\what\ever
不匹配,因为它只在开始时查找正斜杠。它也不会匹配超过两个字符的终端文件名。我认为更好的是:
var pathRE = /^\.\.(?:\\[A-Za-z0-9_-]+)+/;
对您期望的文件名字符进行适当的更改。
答案 1 :(得分:3)
逃避斜线:
/^((\.\./|[a-zA-Z0-9_\/\-\\])*\.[a-zA-Z0-9])/
// here __^ and add slash __^