Необязательный пробел. Как добавить?

154
23 апреля 2019, 10:50
var pattern = /^[a-z0-9-А-Яа-я]+$/i;

Вот мое регулярное выражение, которое пропускает русские и английские буквы и цифры.

Собственно вопрос: как добавить в RegExp необязательный пробел в конце и в начале?

input1.oninput = function(value) {
    var newValye = this.value;
    if(pattern.test(newValye)){
        bab_number.style.display= "none"
    }else{
        bab_number.style.display= "block"
    }
};

Что я хочу?

Я хочу, чтобы при вводе в строку поиска можно было ввести 2-3 слова через пробел.

Answer 1

Один необязательный пробел — ? или \s?.

Несколько необязательных пробелов — * или \s*.

Добавьте в свой щаблон следующим образом:

var pattern = /^\s*[a-z0-9-а-яё]+\s*$/i;

Чтобы ввести 2-3 слова, нужно использовать

var pattern = /^\s*[a-z0-9-а-яё]+(?:\s+[a-z0-9-а-яё]+){1,2}\s*$/i;

Я добавил ё в выражение и удалил ненужные А-Я (так как имеется флаг i).

Подробности

  • ^ - начало строки
  • \s* - 0 и более пробельных символов
  • [a-z0-9-а-яё]+ - 1 и более букв, цифр и -
  • (?:\s+[a-z0-9-а-яё]+){1,2} - 1 или 2 повтора
  • \s+ - 1 и более пробельных символов
    • [a-z0-9-а-яё]+ - 1 и более букв, цифр и -
  • \s* - 0 и более пробельных символов
  • $ - конец строки.
READ ALSO
Что не так c кодом? [закрыт]

Что не так c кодом? [закрыт]

Почему код всегда выводит "1"?

141
Изменить значение в state массива

Изменить значение в state массива

По нажанию на лайк, должен измениться цвет и увеличится кол-во на +1Повторное нажание -1

175
Angular 6 вызов script js файлов

Angular 6 вызов script js файлов

У меня Angualar 6 и я вызываю script js файлов но они не работают, что советуйте как еще сделать? В angularjson тоже попробовал тоже самое

163
Странно работает setInterval()

Странно работает setInterval()

Имеется компонент в React JS:

115