Страницы

Поиск по вопросам

среда, 25 декабря 2019 г.

Регулярное выражение для форматированного целого или дробного числа с одним или двумя знаками в дробной части

#javascript #регулярные_выражения


Мне нужно регулярное выражение для дробного числа.
Чтобы выражение пропускало числа, запятые и от 0 до 1 точки. Если присутствует точка,
то чтобы после неё было от 1 до 2 чисел.

Примеры в каком виде числа должны проходить:

241
3,423.1
324.34
342,333.33


Примеры в каком виде числа НЕ должны проходить:

23423.
42.343.33

    


Ответы

Ответ 1



Вы можете использовать ^\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?$ См. демо регулярного выражения. Подробности ^ - начало строки \d{1,3} - 1, 2 или 3 цифры (?:,\d{3})* - 0 и более повторов последовательностей: , и три цифры (\d{3}) (?:\.\d{1,2})? - 1 или 0 повторов точки (\.) и одной или двух цифр (\d{1,2}) $ - конец строки. Демо-код: var strs = ['241','3,423.1','324.34','342,333.33','23423.','42.343.33']; var rx = /^\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?$/; for (var s of strs) { console.log(s, "=>", rx.test(s)); } Если вы хотите пропустить все строки типа 01.2, 002, используйте ^(?!0+[1-9])\d{1,3}(?:,\d{3})*(?:\.\d{1,2})?$ ^^^^^^^^^^^ Негативный блок предварительного просмотра вперёд (?!0+[1-9]) не найдет совпадения, если строка начинается с 1+ нуля и потом за ними следует цифра, отличная от нуля. См. демо регулярного выражения.

Ответ 2



Держи ^[\d]+((,[\d]+|)*(\.[\d]{1,2})|)$

Ответ 3



Например, так: ^([1-9]\d{0,2}(,\d{3})*|0)(\.\d{1,2})?$

Комментариев нет:

Отправить комментарий