2015-12-03 4 views
-1

Мне нужно выражение, которое будет соответствовать любому числу, которое может иметь или не иметь + или - перед ним, а также может иметь или не иметь десятичную цифру в любом до или после любого числа. .432423 и 42343242. действительны, но одно десятичное число не существует, хотя с выражением, которое я запускаю на одном десятичном знаке, проходит мой тест на достоверность. Пожалуйста, скажите мне, что не так с этим кодом, а не дайте мне ответ. Спасибо!Выражение не будет выполняться так, как должно быть

var number = /^((\-|\+)?([\d*\.?\d+])|([\d+\.?\d*]))$/; 
+0

Вы пытаетесь захватить часть номера или просто проверить, соответствует ли номер определенному формату? Вы используете много _parenthesis_, что означает групповой захват в регулярном выражении для извлечения частей номера. –

ответ

0

[\d*\.?\d+] соответствует любому одному символу из этого набора, и так будет соответствовать одному .. Удаление обеих пар кронштейнов заставляет его работать правильно.

0

взгляд на этот один

/^([-+]?[.]{1}\d+)|([-+]?\d+[.]{1}\d*)$/

с этим один у вас есть 2 матча группы .. первый дают вам число [+ -]. 1234 и второй один [+ -] 123 . [123]

+0

@JohnCarpenter yep, и я думаю, что это было намерение владельца вопроса, а если нет, то его единственный способ изменить {1} на? после [.], если он хочет целые числа – Czejeno

+0

Хммм, я думаю, он хотел бы иметь опциональный десятичный знак. В любом случае, хорошая точка. Я удалю свой комментарий. –

Смежные вопросы