SyntaxError:用于验证本地文件路径的未终止括号

时间:2013-09-26 14:01:02

标签: javascript jquery regex

我必须验证本地文件夹路径,其格式如下:.. \ sentinel \ log。

对于C:\ sentinel \ log,我有旧的正则表达式(/[\w]:\.*/))。我需要接受这条道路。

我从regexplibrary

得到以下表达
  

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

2 个答案:

答案 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 __^