Javascript, возвращающий строку в качестве регулярного выражения для метода jquery validate add - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть метод jquery validate add ниже с определенным регулярным выражением.

Я хочу создать метод, который возвращает регулярное выражение, как в моем втором примере, но второй пример не работает.Я получаю сообщение об ошибке: «Объект не поддерживает свойство или метод« 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}$/';
  }
}

1 Ответ

0 голосов
/ 19 декабря 2018

Итак, в 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(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...