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(...);