Множественный тест регулярных выражений jQuery - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь выполнить несколько тестов регулярных выражений в поле ввода.Ниже сценария:

$("#search-registration").keyup(function () {
    var input_data = $('#search-registration').val();

    var regexTest = function() {
      this.withPrefix = /^[iI]-[a-zA-Z]{4}$/;
      this.noPrefix = /^[a-zA-Z]{4}$/;
    }

    if(regexTest.withPrefix.test(input_data) || regexTest.noPrefix.test(input_data)) {
      console.log(input_data);
      $( "div.result" ).html(input_data);
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="search-registration" name="regcode" class="form-control" placeholder="Search">
<div id="result">

</div>

Я не могу выполнить двойное регулярное выражение и получаю следующую ошибку: Uncaught TypeError: Невозможно прочитать свойство 'test' из undefined Что я делаюнеправильно?Честно говоря, я не могу понять проблему.Спасибо

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Вам нужно ключевое слово 'new' перед функцией, например:

  var regexTest = new function() {
      this.withPrefix = /^[iI]-[a-zA-Z]{4}$/;
      this.noPrefix = /^[a-zA-Z]{4}$/;
    }
0 голосов
/ 25 августа 2018

Попробуйте использовать

var regexTest = Object({
  withPrefix : "/^[iI]-[a-zA-Z]{4}$/", 
  noPrefix : "/^[a-zA-Z]{4}$/",
  test : function (input_data) {
      //test code here
  }
});

Вместо

var regexTest = function() {
  this.withPrefix = /^[iI]-[a-zA-Z]{4}$/;
  this.noPrefix = /^[a-zA-Z]{4}$/;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...