Javascript Форма Санация - PullRequest
       12

Javascript Форма Санация

0 голосов
/ 11 апреля 2019

Я хотел бы проверить и санировать входные данные, например, "поиск", исходящий из запроса формы GET, но я упускаю что-то в сопоставлении с шаблоном Javascript.

Это функция, над которой я сейчас работаю:

function jsValidationAndSanitization() {
  /**
      Validate and sanitize every input that comes from an HTML form.
      @return boolean
  **/

  var submittedInput = document.forms["form"]["search_input"].value;

  if (submittedInput == "") {
    alert("error: empty input");
    return false;
  }
  if (submittedInput != "") {
    // admitted chars ( white list )
    var wl_pattern = /[A-z][0-9]/;

    // loop for every chars in the submitted string
    for (char in submittedInput) {
      // if a bad char is present on the string return false
      var result = char.match(wl_pattern); // INVERT THE MATCH OF RE HERE                   alert(result);
      return false;
    }

    return true;
  }
}
<form action="" method="GET" id="form" onsubmit="return jsValidationAndSanitization()">
  <fieldset>
    <legend>Test box</legend>
    <label for="search" id="search_input">Search</label>
    <input type="text" id="search_input" name="search_input" />
    <input type="submit" id="submit" value="submit" />
  </fieldset>
</form>

Так что я стараюсь инвертировать совпадения (только символы и числа) соответствия шаблонам Javascript, но на самом деле я не нашел симпатичного способа сделать это и завершить функцию.

Есть предложения по этому поводу?

1 Ответ

3 голосов
/ 11 апреля 2019

Вам не нужно сопоставлять шаблон с каждым символом, который вы можете просто сопоставить со строкой, и вы можете просто вернуть совпадение для любого символа, кроме A-z или 0-9. Метод сопоставления regexp возвращает объект, если он находит совпадение, и ноль, если ничего не найдено, поэтому в этом случае, чтобы превратить его в логическое значение, просто добавив! добавить с !!.

function jsValidationAndSanitization() {
  /**
      Validate and sanitize every input that comes from an HTML form.
      @return boolean
  **/

  var submittedInput = document.forms["form"]["search_input"].value;

  if (submittedInput == "") {
    console.log("error: empty input");
    return false;
  }
  if (submittedInput != "") {
    // non-admitted chars ( black list )
    var wl_pattern = /[^A-z0-9]+/;
    var result = submittedInput.match(wl_pattern);
    if (result) { console.log(result); }
    return !result;
  }
  return false; // Catch all to return false
}
...