Я сталкиваюсь с трудностями, чтобы разрешить слэш "/" с существующим регулярным выражением
Ниже представлено существующее Regex, которое позволяет использовать точки и числа:
val.match(/^[0-9]+(\.[0-9]{1,2})?$/)
Я меняю его на...
val.match(/^[0-9]+([./][0-9\/]{1,2})?$/)
Но это не позволит количество, например, 1.5/384, где и точка/период, и косая черта одновременно.
Может кто-нибудь мне помочь?
Вы можете добавить необязательную группу, не связанную с захватом, после того, как ваша основная часть шаблона будет соответствовать 1 или 0 вхождениям /
последующим с 1 или более цифрами:
/^\d+(?:\.\d{1,2})?(?:\/\d+)?$/
^^^^^^^^^^
подробности
^
- начало строки\d+
- 1 или более цифр(?:\.\d{1,2})?
- необязательная последовательность .
и затем 1 или 2 цифры(?:\/\d+)?
- необязательная последовательность /
а затем 1+ цифр$
- конец строки. Если число после /
может быть плавающим в том же формате, что и первый номер:
/^\d+(?:\.\d{1,2})?(?:\/\d+(?:\.\d{1,2})?)?$/
^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
Это должно делать то, что вы хотите:
^(\d+(?:\.\d{1,2})?\/?(?:\d+\.\d{1,2})?)$
См. Это Regex101.com
Изменить: Исправлен тот факт, что он не соответствует 1
или 1.5
1
.
^(\d+(?:\.\d{1,2})?\/?\d+(?:\.\d{1,2})?)$
не соответствует 1
и 1.5
но кого это волнует .. ,
^[0-9]+(\.[0-9]{1,2})?(?:\/\d+)?$
? Вы хотите соответствовать1/384
? Если нет, используйте^[0-9]+(\.[0-9]{1,2}(?:\/\d+)?)?$
. Может ли число после/
быть плавающим?