Самый быстрый способ использовать регулярные выражения для проверки строки на наличие шаблона в JavaScript - это метод .test (). Если есть совпадение, .test () возвращает true; в противном случае возвращается false.

/4/.test(“345”); 
//=> true
/8/.test(“345”); 
//=> false

Проверка на действительный номер

Давайте в качестве примера воспользуемся проверкой действительного числа. Допустим, мы также хотим разрешить использование необязательных разделительных запятых, каждая из которых должна разделять ровно три конечных цифры. Десятичные точки, если они есть, должны встречаться только один раз и никогда не должны стоять в конце числа. Например, «1,234,56» и «1234,5» следует оформлять как действительные числа, а «семь», «12e34» или «123». должен потерпеть неудачу.

Эти метасимволы регулярных выражений пригодятся:

/p+/

соответствует одному или нескольким экземплярам шаблона «p»

/p*/

соответствует нулю или более вхождений шаблона «p»

/p?/

соответствует нулю или одному вхождению шаблона «p»

/p{n}/

соответствует n экземплярам шаблона «p»

/p{n,n}/

соответствует от n до n вхождений шаблона «p»

/^p/

соответствует любой строке, начинающейся с шаблона «p»

/p$/

соответствует любой строке, заканчивающейся шаблоном «p»

/^p$ /

соответствует всей строке, содержащей только шаблон «p»

/\d/

соответствует любому целому числу

/\./

соответствует десятичной запятой, экранируя ее

/[cn]/

соответствует любому экземпляру символов «c» или «n».

/(p1|p2)/

соответствует любому экземпляру шаблона «p1» или «p2»

Давайте начнем с тестирования примера простейшего допустимого значения (скажем, «1») и перейдем к самому сложному допустимому значению, которое использует несколько запятых и десятичную дробь (скажем, «1 234 567,89»).

Чтобы проверить «1», все, что вам нужно, это регулярное выражение \ d (цифра):

/\d/.test("1");
//=> true

Поскольку вы хотите проверять исключительно на наличие цифр (например, «1w» не должно быть действительным), убедитесь, что проверяемая строка содержит только указанный шаблон, заключив регулярное выражение в ^ и $:

/^\d$/.test("1");
//=> true

Теперь, чтобы учесть не одну, а любое количество цифр, добавьте +:

/^\d+$/.test("1234");
//=> true

Учет запятых немного сложнее. Сначала вам нужно разрешить последовательность чисел без запятых или с запятыми, используя (|). Затем вам нужно использовать фигурные скобки {}, чтобы указать, что запятая всегда должна начинаться с одной, двух или трех цифр, а за ними следует ровно три цифры.

// "\d{1,3}"   = one, two, or thee digits
// ",\d{3}"    = a comma followed by exactly three digits
/^(\d+|\d{1,3},\d{3})$/.test("1,234");
//=> true

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

// "(,\d{3})*" = a comma and three digits, any number of times
/^(\d+|\d{1,3}(,\d{3})*)$/.test("1,234,567");
//=> true

Отсюда относительно просто учесть десятичные точки. Просто используйте \. , чтобы проверить наличие десятичной точки, и используйте \ d +, чтобы убедиться, что за любой десятичной точкой следует хотя бы одна цифра.

// "\.\d+"    = a decimal point followed by one or more digits
// "(\.\d+)?" = that pattern occurring zero or one times
/^(\d+|\d{1,3}(,\d{3})*)(\.\d+)?$/.test("1,234,567.89");
//=> true

Наконец, если вы хотите разрешить использование чисел, начинающихся с десятичной точки (т. Е. Не только «0,89», но и «.89»), используйте (|) для поместите все регулярное выражение в качестве первого условия оператора «или», а «\. \ d +» - в качестве второго.

(/^((\d+|\d{1,3}(,\d{3})*)(\.\d+)?|\.\d+)$/).test(“.89”);
//=> true

Матчи:

(/^((\d+|\d{1,3}(,\d{3})*)(\.\d+)?|\.\d+)$/).test("1234");
//=> true
(/^((\d+|\d{1,3}(,\d{3})*)(\.\d+)?|\.\d+)$/).test("1,234");
//=> true
(/^((\d+|\d{1,3}(,\d{3})*)(\.\d+)?|\.\d+)$/).test("1,234,567");
//=> true
(/^((\d+|\d{1,3}(,\d{3})*)(\.\d+)?|\.\d+)$/).test("1,234,567.89");
//=> true
(/^((\d+|\d{1,3}(,\d{3})*)(\.\d+)?|\.\d+)$/).test(".56");
//=> true

Не соответствует:

/^(\d*|\d{1,3}(,\d{3})*)(\.\d+)?$/.test(“word");
//=> false
/^(\d*|\d{1,3}(,\d{3})*)(\.\d+)?$/.test(12e34);
//=> false
/^(\d*|\d{1,3}(,\d{3})*)(\.\d+)?$/.test(123.);
//=> false
/^(\d*|\d{1,3}(,\d{3})*)(\.\d+)?$/.test("12,34.56");
//=> false
/^(\d*|\d{1,3}(,\d{3})*)(\.\d+)?$/.test("12.34.5");
//=> false