Регулярное выражение: исключить все, кроме числа, пробела, знака плюс и периода - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь проверить, имеет ли строка ЛЮБОЙ символ, отличный от: number (0 to 9), space ( ), period (.) or negative sign (-)

Мой лучший снимок после нескольких часов: ([\d\s]|[.-]) Что делает наоборот, он выбирает числа, пробелы, точки иминус.

Таким образом, идея состоит в том, чтобы использовать .test() для проверки наличия букв, других символов или символов и т. Д., Например: pattern.test(string)

Я пытался использовать отрицательный ?!но я все еще не могу заставить его работать.

Что я делаю плохо?Я новичок в регулярных выражениях и пытаюсь учиться.Спасибо

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Вы можете использовать отрицательный прогноз:

(?!...) - Начиная с текущей позиции в выражении, гарантирует, что данный шаблон не будет совпадать. Не потребляет символы.

Итак, ваше окончательное выражение может выглядеть так: (?![\d\s]|[.-]).

Но, конечно, предыдущий ответ более прост: [^0-9 .-]

Я считаю этот инструмент очень полезным для регулярных выражений: https://regex101.com Это помогает проверить и содержит некоторые примеры и объяснения.

Снимок экрана: https://monosnap.com/image/YVBDVzEV8yT8Gic0av74nhW3jIWwyR.png

0 голосов
/ 16 января 2019

Вам необходимо использовать отрицательный набор символов и поместить разрешенные символы в набор, таким образом сопоставляя все, что не входит в набор:

const re = /[^0-9 .-]/;
const test = str => {
  if (re.test(str)) {
    console.log('Other characters are included');
  } else {
    console.log('All characters in string are permitted');
  }
};
test('1234');
test('foo3');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...