Регулярное выражение также позволяет использовать косую черту «/» с существующим регулярным выражением

1

Я сталкиваюсь с трудностями, чтобы разрешить слэш "/" с существующим регулярным выражением

Ниже представлено существующее Regex, которое позволяет использовать точки и числа:

val.match(/^[0-9]+(\.[0-9]{1,2})?$/)

Я меняю его на...

val.match(/^[0-9]+([./][0-9\/]{1,2})?$/)

Но это не позволит количество, например, 1.5/384, где и точка/период, и косая черта одновременно.

Может кто-нибудь мне помочь?

  • 2
    Может быть, вы хотите ^[0-9]+(\.[0-9]{1,2})?(?:\/\d+)?$ ? Вы хотите соответствовать 1/384 ? Если нет, используйте ^[0-9]+(\.[0-9]{1,2}(?:\/\d+)?)?$ . Может ли число после / быть плавающим?
  • 0
    Да, я тоже хочу соответствовать 1/384.
Показать ещё 3 комментария
Теги:

2 ответа

1
Лучший ответ

Вы можете добавить необязательную группу, не связанную с захватом, после того, как ваша основная часть шаблона будет соответствовать 1 или 0 вхождениям / последующим с 1 или более цифрами:

/^\d+(?:\.\d{1,2})?(?:\/\d+)?$/
                   ^^^^^^^^^^

См. Демо-версию regex

подробности

  • ^ - начало строки
  • \d+ - 1 или более цифр
  • (?:\.\d{1,2})? - необязательная последовательность . и затем 1 или 2 цифры
  • (?:\/\d+)? - необязательная последовательность / а затем 1+ цифр
  • $ - конец строки.

Если число после / может быть плавающим в том же формате, что и первый номер:

/^\d+(?:\.\d{1,2})?(?:\/\d+(?:\.\d{1,2})?)?$/
  ^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^^^^
1

Это должно делать то, что вы хотите:

^(\d+(?:\.\d{1,2})?\/?(?:\d+\.\d{1,2})?)$

См. Это Regex101.com

Изменить: Исправлен тот факт, что он не соответствует 1 или 1.5

  • 0
    Подожди, нужно исправить это, оно не соответствует 1 .
  • 0
    ^(\d+(?:\.\d{1,2})?\/?\d+(?:\.\d{1,2})?)$ не соответствует 1 и 1.5 но кого это волнует .. ,
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню