Подтвердить что ты не робот

Regex: как совместить строку, которая является не только числом

Можно ли написать регулярное выражение, которое соответствует всем строкам, которое не только содержит числа? Если у нас есть эти строки:

  • ABC
  • A4C
  • 4BC
  • AB4
  • 123

Он должен соответствовать четырем первым, но не последним. Я пробовал заниматься в RegexBuddy с помощью взглядов и прочее, но я не могу понять, как это сделать.

4b9b3361

Ответ 1

(?!^\d+$)^.+$

Это говорит о поиске строк, которые не содержат всех цифр и соответствуют всей строке.

Ответ 2

Если мне что-то не хватает, я думаю, что самое сжатое регулярное выражение...

/\D/

... или, другими словами, есть ли цифра в строке?

Ответ 3

/^\d*[a-z][a-z\d]*$/

Может быть цифра в начале, затем по крайней мере одна буква, затем буквы или цифры

Ответ 4

jjnguy имел правильную (если немного избыточную) версию более ранней версии.

.*?[^0-9].*

@Chad, ваше регулярное выражение,

\b.*[a-zA-Z]+.*\b

должно, вероятно, допускать не буквы (например, пунктуацию), хотя примеры Svish не включали их. Основным требованием Svish было: не все цифры.

\b.*[^0-9]+.*\b

Затем вам не нужен +, потому что все, что вам нужно, - это гарантировать, что там находится не цифра (возможно, там будет больше, чем закрыто. * на концах).

\b.*[^0-9].*\b

Затем вы можете покончить с \b на обоих концах, так как это ненужные ограничения (ссылаясь на буквенный символ и _).

.*[^0-9].*

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

Мы можем проверить это регулярное выражение в браузере, скопировав следующее в строку местоположения, заменив строку "6576576i7567" тем, что вы хотите проверить.

javascript:alert(new String("6576576i7567").match(".*[^0-9].*"));

Ответ 5

Так как вы сказали " соответствие", а не только проверку, следующее регулярное выражение будет правильно соответствовать

\b.*[a-zA-Z]+.*\b

Прохождение тестов:

abc
a4c
4bc
ab4
1b1
11b
b11

Неудачные тесты:

123

Ответ 6

Попробуйте следующее:

/^.*\D+.*$/

Он возвращает true, если есть какой-то символ, который не является числом. Хорошо работает со всеми языками.

Ответ 7

если вы пытаетесь сопоставить миры, имеющие хотя бы одну букву, но они образованы цифрами и буквами (или просто буквами), это то, что я использовал:

(\d*[a-zA-Z]+\d*)+

Ответ 8

Если мы хотим ограничить допустимые символы, чтобы строка могла быть сделана из ограниченного набора символов, попробуйте следующее:

(?!^\d+$)^[a-zA-Z0-9_-]{3,}$

или

(?!^\d+$)^[\w-]{3,}$

/\ ш +/: Соответствует любой букве, номеру или подчеркиванию. любой символ слова