Ваши регулярные выражения 1, 2,
внутри 1, 2, abc
, это частичное совпадение. Чтобы запретить частичные совпадения, используйте привязки start-of-string и end-of-string.
В Ruby, чтобы соответствовать началу строки, вам необходимо использовать якорь \A
. Анкер конца строки - \z
. Таким образом, использовать
/\A[0-9,\s]+\z/
См regex demo
Также отметим, что ,
не является специальным регулярное выражение метасимволом и не нужно бежать.
Если вам нужно начать с номером, вы можете использовать
/\A\d[\d,\s]*\z/
Здесь \d
потребуется цифра появится в начале, а затем он может следовать с цифрами, пробелами и запятыми, ноль или больше случаев. Другой способ ограничить общий класс символов - использовать lookahead: \A(?=\d)[\d,\s]+\z
.
Двигаясь дальше, вы можете сопоставить числа как 1,300,567.567
или 1 300 567.567
с
/\A\d{1,3}(?:[,\s]\d{3})*(?:\.\d+)?\z/
См another demo
Используйте анкеры: '/ \ A [0-9, \ s] + \ г /'. Но это также будет соответствовать строкам ',,, 123, 33, 33'. Вы хотите только совместить числа с плавающей точкой? –
Спасибо. Пожалуйста, разместите его как ответ, чтобы я мог отметить его как принятый. Также возможно вы можете немного объяснить – Zelenka
Было бы здорово, если первый символ должен быть числом (а не запятой) – Zelenka