Javascript 返回字符串作为 jquery 验证添加方法的正则表达式
Javascript returning a string as a regex for jquery validate add method
我有这个 jquery 使用特定正则表达式验证下面的添加方法。
我想要的是创建一个 returns 正则表达式的方法,就像在我的第二个示例中一样,但是第二个示例不起作用。我收到一些错误提示“对象不支持 属性 或方法 'test'
if (scope.countryCode == "DE") {
$.validator.addMethod('PostalCodeError',
function(value) {
return /^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(value);
}, 'Please enter a valid German postal code.');
$("#PostalCode").rules("add", {
PostalCodeError: true
});
}
我想要下面这样的东西
$.validator.addMethod('PostalCodeError',
function(value) {
return GetCountryRegex().test(value);
}, 'Please enter a valid postal code.');
$("#PostalCode").rules("add", {
PostalCodeError: true
});
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}$/';
}
}
因此,在 GetCountryRegex
中,您实际上并没有返回 RegEx,而是返回的字符串。
对返回值使用 new RegExp
将字符串转换为 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(...);
我有这个 jquery 使用特定正则表达式验证下面的添加方法。
我想要的是创建一个 returns 正则表达式的方法,就像在我的第二个示例中一样,但是第二个示例不起作用。我收到一些错误提示“对象不支持 属性 或方法 'test'
if (scope.countryCode == "DE") {
$.validator.addMethod('PostalCodeError',
function(value) {
return /^(?!01000|99999)(0[1-9]\d{3}|[1-9]\d{4})$/.test(value);
}, 'Please enter a valid German postal code.');
$("#PostalCode").rules("add", {
PostalCodeError: true
});
}
我想要下面这样的东西
$.validator.addMethod('PostalCodeError',
function(value) {
return GetCountryRegex().test(value);
}, 'Please enter a valid postal code.');
$("#PostalCode").rules("add", {
PostalCodeError: true
});
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}$/';
}
}
因此,在 GetCountryRegex
中,您实际上并没有返回 RegEx,而是返回的字符串。
对返回值使用 new RegExp
将字符串转换为 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(...);