#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})?$
Комментариев нет:
Отправить комментарий