返回字符串作为jquery validate add方法的正则表达式的Javascript

返回字符串作为jquery validate add方法的正则表达式的Javascript,javascript,jquery,regex,jquery-validate,Javascript,Jquery,Regex,Jquery Validate,我在下面用一个特定的正则表达式创建了这个jqueryvalidateadd方法 我想要的是创建一个返回正则表达式的方法,就像在我的第二个示例中一样,但是第二个示例不起作用。我得到一些错误,说“对象不支持属性或方法”测试 if(scope.countryCode==“DE”){ $.validator.addMethod('PostalCodeError', 函数(值){ 返回/^(?!01000 | 99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(值); },“请输入

我在下面用一个特定的正则表达式创建了这个jqueryvalidateadd方法

我想要的是创建一个返回正则表达式的方法,就像在我的第二个示例中一样,但是第二个示例不起作用。我得到一些错误,说“对象不支持属性或方法”测试

if(scope.countryCode==“DE”){
$.validator.addMethod('PostalCodeError',
函数(值){
返回/^(?!01000 | 99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(值);
},“请输入有效的德国邮政编码。”);
$(“#PostalCode”)。规则(“添加”{
错误:正确
});
}
我想要下面这样的东西

$.validator.addMethod('PostalCodeError',
函数(值){
返回GetCountryRegex().test(值);
},“请输入有效的邮政编码。”);
$(“#PostalCode”)。规则(“添加”{
错误:正确
});
函数GetCountryRegex(){
如果(scope.countryCode==“DE”){
返回“/^(?!01000 | 99999)(0[1-9]\d{3}|[1-9]\d{4})$/”;
}
如果(scope.countryCode==“AT”){
返回“/^\\d{4}$/”;
}
}

因此,在
GetCountryRegex
中,您实际上并没有返回RegEx,即返回的字符串

在返回值上使用将字符串转换为RegExp:

function GetCountryRegex() {
  if (scope.countryCode == "DE") {
    return '/^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$/';
  }
  if (scope.countryCode == "AT") {
    return '/^\\d{4}$/';
  }
}

var regExp = new RegExp(GetCountryRegex());
regExp.test(...);

请注意,
/regexp/
'/regexp/'
是两个不同的东西(第二个是字符串)。尝试使用
返回新的RegExp('RegExp')我删除了代码片段。如果你没有包含正确的HTML/CSS/JavaScript/插件来制作一个实时演示,那么它们完全没有意义。