Reg exp для плавающего числа - PullRequest
1 голос
/ 11 июля 2019

Мне нужен reg exp, который должен соответствовать приведенному ниже шаблону:

  1. Может начинаться с и может заканчиваться либо точкой, либо числом (., .1, .1., 1, 1., 1.1)
  2. Допускается только одна точка между двумя числами (1.1)
  3. Кроме того, точка не является обязательной (123)

Я пытался использовать (^[\d.\]?|[0-9]*\.|[0-9]+|[0-9]+), но не работает.Это соответствует n количеству точек и не соответствует номеру после точки

Ответы [ 3 ]

1 голос
/ 11 июля 2019

Это подтверждение подтверждения

^(?:\d+(?:\.\d*)?|\.\d+)$

Расширен

 ^ 
 (?:
      \d+ 
      (?: \. \d* )?
   |  
      \. \d+ 
 )
 $ 

Это проверка после нажатия клавиши

^(?:\d+(?:\.\d*)?|\.(?:\d+)?)$

0 голосов
/ 11 июля 2019

Я использовал это регулярное выражение:

^((\d*\.)(\d+\.)*)?\d*$

Моя идея такова:

  • Совпадение всех цифр в начале строки.
  • Совпадение с первымточка.
  • С этого момента по крайней мере одна цифра должна соответствовать перед новой точкой (\ d + \.) *.
  • Все перечисленные выше действия являются необязательными.
  • Наконец, сопоставьте любое количество цифр \ d *.
  • Используйте ^ и $ для предотвращения промежуточных совпадений в строке.
0 голосов
/ 11 июля 2019

Вы получаете все совпадения, потому что вы используете 3 чередования (из которых последние 2 одинаковы [0-9]+)

Первая часть чередования утверждает начало строки ^ и фактическикласс символов ^[.\]?|[0-9]*, повторяющийся 0+ раз, соответствующий любому из перечисленных символов .]?| или диапазону 0-9.

После этого он должен соответствовать точке, которая является последней точкой в ​​строке, посколькутакже могут быть сопоставлены в классе персонажа.Тогда другое чередование сопоставляет любые цифры в конце.

Если поддерживается положительный прогноз, а пустые совпадения не разрешены, вы можете использовать положительный прогноз, чтобы проверить, присутствует ли хотя бы цифра или точка.

Затем сопоставьте необязательную точку и используйте шаблон зацикливания, чтобы сопоставить 1+ цифр, за которыми следует необязательная точка.

^(?=[.\d])\.?(?:\d+\.?)*$
  • ^ Начало строки
  • (?=[.\d]) Укажите точку или цифру
  • \.? Соответствует необязательной точке
  • (?:\d+\.?)* Повторите 0+ раз, сопоставляя 1+ цифру и дополнительную точку
  • $ Конецстроки

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...