Как я могу просто это число формат проверки регулярное выражение?
Итак, у меня есть это утверждение if:if (String(val).search(/^((d+(((,d{3,})+)?)(.d+)?)|(.d+))$/) !== -1)
Строка должна начинаться либо с одной цифры, либо с
.
.Если строка начинается с цифры, в ней могут быть запятые, если за запятыми следуют по крайней мере три цифры. Если строка содержит
.
, за ней должна следовать по крайней мере одна цифра.Может быть только один
.
Итак, строки например:
5
5.00
5000
5000
5000.00
5,000. 00
Все вернет true
Но строки, содержащие что-либо кроме 0-9 , .
или искаженные, вернут false.
Итак, строки, подобные этой:
5,00
5,00. 00
5.00.00
a5
Итак, вышеизложенное работает, но мне интересно, есть ли какой-либо способ упростить его?
2 ответа:
Вы можете удалить некоторые избыточные скобки:
^(\d+((\,\d{3,})+)?(\.\d+)?|\.\d+)$
И что-то вроде
(( ... )+)?
можно заменить на:( ... )*
, поэтому конечное регулярное выражение может выглядеть следующим образом:^(\d+(\,\d{3,})*(\.\d+)?|\.\d+)$
И если вы хотите отклонить ввод типа:
50000,000,000.0
И допускают только:
5,000,000.0 50,000,000.0 500,000,000.0
Тогда сделайте что-нибудь вроде этого:
^(\d{1,3}(\,\d{3})*(\.\d+)?|\.\d+)$