Кто-нибудь может мне помочь написать регулярное выражение для 60 чисел, разделенных пробелами? Значения могут быть числами с плавающей запятой или целыми числами.

Например: «90,90 78,54 34 ....» (60 значений) или «89,43 90 34 ....» (60 значений).

Я попробовал следующий

^(\s*([0-9]|[0-9.])+\s*){60}$

Но это приводит к сбою браузера.

1 ответ1

1

Некоторые проблемы с вашим выражением:

^(\s*([0-9]|[0-9.])+\s*){60}$

  • почему у вас есть \s* как в начале, так и в конце? Одного из них (в конце) будет достаточно
  • \s*: почему *? Пробел не является обязательным, между цифрами должен быть пробел (если вы хотите охватить ситуацию, когда последний номер является концом строки, вы можете использовать ([0-9.]+\s+){59}[0-9.]+
  • ([0-9]|[0-9.]) - [0-9.] Будет достаточно, сохранив много шагов для движка регулярных выражений
  • ^...$ - вы хотите выбрать 60 чисел или просто подтвердить, что строка состоит из 60 чисел? (ваш подход показывает второй).

Таким образом, правильное выражение будет:

  • ([0-9.]+\s+){59}[0-9.]+ ,
  • или включая начальные и конечные пробелы:
    \s*([0-9.]+\s+){59}[0-9.]+\s* ,
  • и при желании вы можете заключить его между ^...$

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .