Проверить строку, чтобы соответствовать число / число с плавающей запятой - PullRequest
1 голос
/ 24 июня 2019

У меня возникли проблемы с регулярным выражением, потому что проверка того, что это значение является допустимым числом / float.

Значение регулярного выражения: (?<=^| )\d+((\,\d+)|(\.\d+))?(?=$| )

Допустимые примеры: "51,5", "54", "54,636", "-45,6", "-2", ...

Примеры, которые не разрешены: "djg52§", "-", "51". "56 8", "89 -", ...

Проблема заключается в том, что это регулярное выражение содержит positive lookbehind, но в настоящее время оно не поддерживается в Mozilla Firefox. Какая альтернатива этому регулярному выражению, без оглядки назад?

1 Ответ

1 голос
/ 24 июня 2019

Вы можете использовать

(?:^ ?|\D )(-?\d+(?:[,.]\d+)?)(?!\S| \d)

Или, если ваши строки автономны

(?:^\s?|\D\s)(-?\d+(?:[,.]\d+)?)(?!\S|\s\d)

См. Демонстрацию регулярных выражений и график регулярных выражений :

enter image description here

Детали

  • (?:^\s?|\D\s) - группа без захвата, соответствующая началу строки с необязательным пробелом после или нецифровый символ и пробел
  • (-?\d+(?:[,.]\d+)?) - Группа захвата 1: необязательные -, 1+ цифр и необязательная последовательность , или . и 1+ цифр
  • (?!\S|\s\d) - отрицательный прогноз, который не соответствует совпадению, если непосредственно справа от текущего местоположения есть непробельный символ или пробел, за которым следует цифра.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...