Javascript 如何解析作为api响应接收的正则表达式

Javascript 如何解析作为api响应接收的正则表达式,javascript,regex,validation,Javascript,Regex,Validation,我的用例是从api响应中获取正则表达式,我必须使用它进行验证 我得到了这样的回应 { valid:'/^4/', displayName:'Card' } 现在我将正则表达式字符串转换为有效的正则表达式 var rec = new RegExp(res.valid); // /\/^4\// 这是不可取的。 如何将字符串形式的正则表达式转换为有效的正则表达式(/^4/)。在字符串中定义正则表达式时,我们不在其周围使用/。这些是文字形式。通过将带有/的字符串传递到新RegEx

我的用例是从api响应中获取正则表达式,我必须使用它进行验证

我得到了这样的回应

{  
   valid:'/^4/',
   displayName:'Card'
}
现在我将正则表达式字符串转换为有效的正则表达式

var rec = new RegExp(res.valid); //  /\/^4\//
这是不可取的。
如何将字符串形式的正则表达式转换为有效的正则表达式(/^4/)。

在字符串中定义正则表达式时,我们不在其周围使用
/
。这些是文字形式。通过将带有
/
的字符串传递到
新RegExp
中,可以使它认为
/
是表达式的一部分

只需删除它们:

var rec = new RegExp(res.valid.substring(1, res.valid.length - 1));
实际上,仔细想想,如果正则表达式上有标志(如
valid:'/^x/i'
),那么您可能需要更进一步:

var res={
有效:“/^x/i”
};
var-rec;
var valid=res.valid;
var匹配;
如果(有效[0]=“/”){
匹配=有效。匹配(/\/([gimuy]*)$/);
}
如果(匹配){
rec=new RegExp(valid.substring(1,valid.length-match[0].length),match[1]| |“”);
}否则{
rec=新的RegExp(有效);
}
console.log(rec.test(“xyz”);//真的
console.log(rec.test(“Xyz”);//真的

console.log(rec.test(“zyx”);//false
新RegExp
不需要
/
分隔符。
var rec;
var valid = res.valid;
var match;
if (valid[0] === "/") {
    match = valid.match(/\/([gimuy]*)$/);
}
if (match) {
    rec = new RegExp(valid.substring(1, valid.length - match[0].length), match[1] || "");
} else {
    rec = new RegExp(valid);
}