Регулярное выражение в Javascript для чисел между 3.0 и 5.0

Я пробую реализовывать регулярное выражение в Javascript, чтобы санкционировать цепи текста, которые могут иметь следующую форму:

  1. Любое число от 3.0 до 5.0 в разрывах в 0.1 (3.0, 3.1, 3.2...)
  2. Номера 3, 4 и 5, и
  3. Цепи 3., 4. и 5. (с точкой в конце концов)

Выражение, которое я получил для этих случаев, /(3|4)((\.?)|(\.[0-9]))|(5(\.?)0?)/ что я встречается с номерами 3, 4 и 5 и цепями 3., 4., 5. но я не получаю числа как 3.1, 3.2, и т.д. даже 5.0 как это индийский Regex 101: Что я повредил в моем регулярном выражении?

8
задан 25.03.2017, 07:26
2 ответа

Попытайся со следующей expresiГіn регулярная:

[34](\.\d?)?|5(\.0?)?

img

10
ответ дан 24.11.2019, 14:54
  • 1
    Много м и # 225; s красивый, что м и # 237; или:) – Alvaro Montoro♦ 09.02.2016, 07:48
  • 2
    с которым ты сделал эта грамм и # 225; fica? – Javier Cárdenas 09.02.2016, 16:29
  • 3
    @JavierC и # 225; rdenas не первый раз, что я вижу кого-то спрашивая что-то сходное и думаю, что никогда они не говорили ему, так что смотря из-за Веба я нашел этот Веб, не, если это будет тот же самый, что использует Пол Варгас но изображение, которое он показывает, он сходный и у него есть соединение для embed в SO - > debuggex.com типов Привета – Angel Angel 09.02.2016, 21:33

Порядок факторов затрагивает результат. В этой части:

((\.?)|(\.[0-9]))

Сначала приходит сравнение с . и потом с .x (с x число между 0 и 9), так что выполняется первая и игнорируется вторая. Возможное решение состояло бы в том, чтобы менять порядок:

((\.[0-9])|(\.?))

С этим уже он распознает тебе 3.0, 3.1, 3.2...

Сейчас, чтобы принимать 5.0 но не 50, ты можешь продолжать сходный метод:

(\.?|\.0)

С этим узнали бы или пустая цепь (для 5), или ., или .0 но никакая другая стоимость.

Соединяя все изменения, регулярное выражение осталось бы таким

^((3|4)((\.[0-9])|(\.?))|(5)(\.?|\.0))$

Замечания:

  • Этот метод может, что это не был лучший (я не опытный в регулярных выражениях), я попробовал приспосабливаться возможное максимальное, во что уже ты имел.
  • Я поместил символы начала и конца цепи, чтобы предотвращать вещи как 3.45, хотя ты мог бы удалять их, если ты хочешь оставить себе стоимость 3.4.
  • Я изменил скобки для того, чтобы первая получающая была стоимостью, второй был целой частью и третий был десятичной частью с точкой.
3
ответ дан 24.11.2019, 14:54

Теги

Похожие вопросы