@GandalfWhiteGO

Как написать регульярное выражение?

Как написать регульярное выражение которое проверяет текст на вывод только букв a-zA-z и значения \n

Вроде написал пример но работает не корректно..
/[a-zA-Z]|\\n/.test('abc\ndsa')

то ест если в тексте существует цифра то все оно не валидно, если сушествует любые буквы или буквы + \n или отдельно \n то текст валиден.

\n - // true
asd\n - // true
dsa\nasd - // true
dsa\nasd\n\ntest\nnewtext - // true

\ - // false
\\n - // false
a1sd\n - // false
dsa\n2asd - // false
asd\asd - // false
dsa\n asd - // false
  • Вопрос задан
  • 112 просмотров
Решения вопроса 3
Seasle
@Seasle Куратор тега JavaScript
/^[a-zA-Z\n]*$/g.test('abc\ndsa')
или даже так
/^([a-zA-Z]|\r\n|\r|\n)*$/g.test('abc\ndsa')
Ответ написан
twobomb
@twobomb
/^[a-z]*\n?[a-z]*$/gi.test(`abc
dsa`)

P.S. Предварительно проверить чтобы строка не была пустой
Ответ написан
dollar
@dollar
Делай добро и бросай его в воду.
если существует любые буквы или буквы + \n или отдельно \n то текст валиден.

Ответ: ^[a-zA-Z]*\n?$
Примеры:
/^[a-zA-Z]*\n?$/.test("asd") //true
/^[a-zA-Z]*\n?$/.test("asd\n") //true
/^[a-zA-Z]*\n?$/.test("asd\n\n") //false
/^[a-zA-Z]*\n?$/.test("asd asd") //false
/^[a-zA-Z]*\n?$/.test("123") //false
/^[a-zA-Z]*\n?$/.test("asd123") //false
/^[a-zA-Z]*\n?$/.test("\nasd") //false
/^[a-zA-Z]*\n?$/.test("\n") //true
/^[a-zA-Z]*\n?$/.test("") //true

P.S. "Любые буквы" включает также и их отсутствие, т.к. на пустом множестве верно любое утверждение. Если пустота не валидна, то это нужно оговаривать (и проверять) отдельно.

P.P.S. Обычно перед тем, как скармливать "грязный" текст регулярному выражению, полезно выполнить .trim(), чтобы убрать пробельные символы в начале и в конце текста (но не в середине). Это избавит от необходимости помнить, что в конце может быть \n или случайно нажатый пробел (например, при вводе логина или пароля) и т.п.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы