Javascript регулярка на цифры

Квантификаторы +, *, ? и

Давайте возьмём строку вида +7(903)-123-45-67 и найдём все числа в ней. Но теперь нас интересуют не цифры по отдельности, а именно числа: 7, 903, 123, 45, 67 .

Число — это последовательность из 1 или более цифр \d . Чтобы указать количество повторений, нам нужно добавить квантификатор.

Количество

Самый простой квантификатор — это число в фигурных скобках: .

Он добавляется к символу (или символьному классу, или набору [. ] и т.д.) и указывает, сколько их нам нужно.

Можно по-разному указать количество, например:

Шаблон \d обозначает ровно 5 цифр, он эквивалентен \d\d\d\d\d .

Следующий пример находит пятизначное число:

alert( "Мне 12345 лет".match(/\d/) ); // "12345"

Мы можем добавить \b , чтобы исключить числа длиннее: \b\d\b .

Для того, чтобы найти числа от 3 до 5 цифр, мы можем указать границы в фигурных скобках: \d

alert( "Мне не 12, а 1234 года".match(/\d/) ); // "1234"

Верхнюю границу можно не указывать.

Тогда шаблон \d найдёт последовательность чисел длиной 3 и более цифр:

alert( "Мне не 12, а 345678 лет".match(/\d/) ); // "345678"

Давайте вернёмся к строке +7(903)-123-45-67 .

Число – это последовательность из одной или более цифр. Поэтому шаблон будет \d :

let str = "+7(903)-123-45-67"; let numbers = str.match(/\d/g); alert(numbers); // 7,903,123,45,67

Короткие обозначения

Для самых востребованных квантификаторов есть сокращённые формы записи:

Означает «один или более». То же самое, что и .

Например, \d+ находит числа (из одной или более цифр):

let str = "+7(903)-123-45-67"; alert( str.match(/\d+/g) ); // 7,903,123,45,67

Означает «ноль или один». То же самое, что и . По сути, делает символ необязательным.

Например, шаблон ou?r найдёт o после которого, возможно, следует u , а затем r .

Поэтому шаблон colou?r найдёт два варианта: color и colour :

let str = "Следует писать color или colour?"; alert( str.match(/colou?r/g) ); // color, colour

Означает «ноль или более». То же самое, что и . То есть символ может повторяться много раз или вообще отсутствовать.

Например, шаблон \d0* находит цифру и все нули за ней (их может быть много или ни одного):

alert( "100 10 1".match(/\d0*/g) ); // 100, 10, 1

Сравните это с + (один или более):

alert( "100 10 1".match(/\d0+/g) ); // 100, 10 // 1 не подходит, т.к 0+ требует как минимум один ноль

Ещё примеры

Квантификаторы используются очень часто. Они служат основными «строительными блоками» сложных регулярных выражений, поэтому давайте рассмотрим ещё примеры.

Регулярное выражение для десятичных дробей (чисел с плавающей точкой): \d+\.\d+

alert( "0 1 12.345 7890".match(/\d+\.\d+/g) ); // 12.345

Регулярное выражение для «открывающего HTML-тега без атрибутов», например, или

.

Регулярное выражение для «открывающего или закрывающего HTML-тега без атрибутов»: //i

В начало предыдущего шаблона мы добавили необязательный слеш /? . Этот символ понадобилось заэкранировать, чтобы JavaScript не принял его за конец шаблона.

В этих примерах мы видим общее правило: чем точнее регулярное выражение – тем оно длиннее и сложнее.

Например, для HTML-тегов без атрибутов, скорее всего, подошло бы и более простое регулярное выражение: <\w+>. Но стандарт HTML накладывает более жёсткие ограничения на имя тега, так что более точным будет шаблон <[a-z][a-z0-9]*>.

Подойдёт ли нам <\w+>или нужно использовать <[a-z][a-z0-9]*>? А, может быть, нужно ещё его усложнить, добавить атрибуты?

В реальной жизни допустимы разные варианты. Ответ на подобные вопросы зависит от того, насколько реально важна точность и насколько потом будет сложно или несложно отфильтровать лишние совпадения.

Источник

Numbers only regex (digits only)

Numbers only (or digits only) regular expressions can be used to validate if a string contains only numbers.

Basic numbers only regex

Below is a simple regular expression that allows validating if a given string contains only numbers:

Enter a text in the input above to see the result

Example code in Javascript:

Real number regex

Real number regex can be used to validate or exact real numbers from a string.

Enter a text in the input above to see the result

Example code in Javascript:

 

Enter a text in the input above to see the result

Notes on number only regex validation

In JavaScript you can also validate number by trying to parse it using a Number constructor and then using isNaN function of a Number class:

Create an internal tool with UI Bakery

Discover UI Bakery – an intuitive visual internal tools builder.

Источник

JavaScript | Как получить только цифры из строки?

Нам нужно из этой строки удалить все буквы и оставить только символы и цифры. Как это сделать?

В этом нам помогут регулярные выражения, классы символов и диапазоны классов. Все замены мы будем производить методом replace() .

CharacterClass, ClassRanges, NonemptyClassRanges - ECMAScript

Регулярному выражению будет присвоен глобальный флаг «g» для оценки всех повторений в строке. Заменять мы будем на пустую строку, что будет приравнено к удалению.

Получим слипшиеся цифры в виде одной строки:

только пробелы stroka.replace(/[^0-9, ]/g,"") пробелы и любые другие символы stroka.replace(/[^0-9,\s]/g,"")

В диапазон символов мы добавили пробел, поэтому нам вернулась строка с пробелами.

Альтернативный синтаксис

Можно использовать специальный экранированный класс символа (CharacterClassEscape), который обозначается буквой D .

Производства CharacterClassEscape - ECMAScript 2021

Он находит сопоставления в строке, которые НЕ равны набору из десяти цифр.

Семантика времени выполнения: компиляция в набор символов - производства

Он экранированный — это значит, что перед D мы должны будем поставить символ обратной косой черты \ . Ну и конечно это всё мы будем вводить внутри шаблона регулярного выражения, который обозначается границами в виде двух косых линий / / .

То есть мы можем найти в строке все места где символ не соответствует одному из: 0123456789

var stroka color: #993300;">Привет1274 ме234ня зо65вут 7987Ефим!"
stroka.replace(/\D/g,'') '1274234657987'

Источник

Читайте также:  Python перехватить все исключения
Оцените статью