new RegExp('^\\d+[.]?([0,2,5,7]?[0,5])?$').test(236.70)
Почему этот код не работает для 123.20 и 123.70? В то время как он успешно тестирует следующие входы:Regex не соответствует нумерации
123.00, 123.05, 123.25, 123.50, 123.55, 123.75
new RegExp('^\\d+[.]?([0,2,5,7]?[0,5])?$').test(236.70)
Почему этот код не работает для 123.20 и 123.70? В то время как он успешно тестирует следующие входы:Regex не соответствует нумерации
123.00, 123.05, 123.25, 123.50, 123.55, 123.75
Вы передаете значение 236.70
и, скорее всего, JavaScript лишает последнего 0
так 236.70 == 236.7
. Затем он не совпадает с последней частью регулярного выражения, где вы соглашаетесь с окончанием [0,5]
.
Вместо этого нанесите его на строку, чтобы заставить конечный 0
оставаться там.
Спасибо @fedorqui –
В вашем регулярном выражении есть некоторые синтаксические ошибки. В той части, где вы сопоставляете десятичную, у вас есть ?
за пределами круглых скобок, когда она (вероятно) должна быть внутри, и у вас есть ,
s в вашем классе персонажей, даже если вы не пытаетесь их сопоставить.
Классы символов ([]
) требуют, чтобы вы отобразили отдельных символов, которых вы хотите сопоставить. Вы также можете получить диапазон символов, используя -
(например, [0-9]
).
new RegExp('^\\d+[.]?([0257]?[05]?)$').test(236.70)
Спасибо @Rocket Hazmat –
новый RegExp ('^ ([5-9 ] [1-9] [0-9]) ([.])? ([0257]? [05])? $ '). Test (00.50) VM37068: 1 Uncaught SyntaxError: отсутствует) после списка аргументов Почему я получаю эту ошибку ??? –
@vikkyDevil: '00.50' неправильный номер. Попробуйте '0.50',' 0.5' или даже просто '.5'. –
Попытка передать строки вместо цифр :) –
Вы не должны ставить запятые в классе символов, если вы не собираетесь соответствовать запятые. Также следует предпочесть литерал регулярного выражения. '/^\ d + \.? ([0257]? [05]?) $ /' – 4castle
Спасибо @ 4castle, это помогло –