2015-02-21 4 views
1

мне нужен RegEx, чтобы соответствовать следующему формату:RegEx получить числовое значение и значение с диапазоном

3 
7.3 
5.7 (2.2-10.4) 

Я хочу, чтобы проверить в JS, если заданное значение, т.е. 5.7 (2.2-10.4) является действительным. И в PHP я хочу разбить строку, чтобы получить все три значения (если есть заданный диапазон).

Это означает, что я должен проверить для простого числового значения (Int и флоат) или числовое значение, а затем диапазон как (d-d)

Моя попытка: /^(\d+)\s\((\d+)\-(\d+)\)$/

+0

нет, я не вижу дублирования моего вопроса. Я попробовал это самостоятельно, но мне нужна помощь, чтобы исправить мою попытку ... – user3142695

ответ

0

основанный на вашей попытке, не считается для отрицательных значений

^(\d+(?:\.\d+)?)(?:\s*\((\d+(?:\.\d+)?)-(\d+(?:\.\d+)?)\))?$ 

Demo

+0

Но '3 (25)' также будет действительным, а это не так. '3 (2-5)' будет действительным. Если после первого значения есть что-то, оно всегда должно быть скобками с диапазоном. – user3142695

+0

Спасибо. Последний вопрос для понимания: как мне изменить regEx для принятия только целочисленных значений? Я пробовал '/^(\ d +) (?: \ S * \ ((\ d +) - (\ d +) \) $)?/Gm', но это не работает должным образом. Строка должна быть недействительной, если есть какой-то нечисловой символ, который задается для десятичных знаков. – user3142695

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