Мне нужно регулярное выражение для валидации two or one
чисел, затем ,
или .
и снова two or one
номеров.
Итак, это допустимые входы:
11,11
11.11
1.1
1,1
Мне нужно регулярное выражение для валидации two or one
чисел, затем ,
или .
и снова two or one
номеров.
Итак, это допустимые входы:
11,11
11.11
1.1
1,1
\d{1,2}[\,\.]{1}\d{1,2}
EDIT: обновление для удовлетворения новых требований (комментарии);)
EDIT: удалить ненужный qtfier согласно Bryan
^[0-9]{1,2}([,.][0-9]{1,2})?$
Чтобы представить одну цифру в виде регулярного выражения, вы можете использовать либо:
[0-9] или \d
Чтобы указать, сколько раз появится число, вы должны добавить
[0-9] *: звезда означает, что есть ноль или более цифр
[0-9] {2}: {N} означает N цифр
[0-9] {0,2}: {N, M} N цифр или M цифр
[0-9] {0-9}: {N-M} N цифр до M цифр. Примечание: M можно оставить пустым для бесконечного представления
Предположим, что я хочу представить число от 1 до 99, я бы сказал следующее:
[0-9] {1-2} или [0-9] {1,2} или \d {1-2} или \d {1,2}
Или скажем, что мы работали с двоичным отображением, отображая размер байта, мы бы хотели, чтобы наши цифры находились между 0 и 1 и длиной байта размером 8, поэтому мы будем представлять его следующим образом:
[0-1] {8} представление двоичного байта
Затем, если вы хотите добавить a или a. символ, который вы использовали бы:
\, или \. или вы можете использовать [.] или [,]
Вы также можете указать выбор между возможными значениями как
[.,] означает либо точку, либо запятую
И вам просто нужно объединить фрагменты вместе, поэтому в случае, когда вы хотите представить 1 или 2-значное число, за которым следует либо запятая, либо период, а затем еще две цифры, вы должны выразить это следующим образом: >
[0-9] {1,2} [.,]\{D} 1-2
Также обратите внимание, что строки регулярных выражений внутри строк С++ должны быть двойными, так что каждый\становится\\
\d
означает цифру на большинстве языков. Вы также можете использовать [0-9]
на всех языках. Для "периода или запятой" используйте [\.,]
. В зависимости от вашего языка вам может потребоваться больше обратных косых черт, исходя из того, как вы цитируете выражение. В конечном счете, движок регулярных выражений должен видеть одиночную обратную косую черту.
*
означает "нуль или больше", поэтому \d*
и [0-9]*
означают "ноль или больше чисел". ?
означает "нуль-один". Ни один из этих квалификаторов не означает ровно один. Большинство языков также позволяют использовать {m,n}
для обозначения "между m и n" (т.е.: {1,2} означает "от 1 до 2" )
Так как точка или запятая и дополнительные номера являются необязательными, вы можете поместить их в группу и использовать квантор ?
для обозначения "нуль-один" этой группы.
Объединяя все это, вы можете использовать:
\d{1,2}([\.,][\d{1,2}])?
Значение, одна или две цифры \d{1,2}
, за которой следует ноль или одна из группы (...)?
, состоящая из точки или запятой, за которой следует одна или две цифры [\.,]\d{1,2}
\d{1,2}[,.]\d{1,2}
\ d означает цифру, {1,2} часть означает 1 или 2 предыдущего символа (\ d в этом случае), а часть [,.] означает запятую или точку.
Если вы хотите быть очень разрешительным, требуется только две последние цифры с запятой или точкой:
^([,.\d]+)([,.]\d{2})$
Самое короткое регулярное выражение, которое я знаю
^\d\d?[,.]\d\d?$
^ И $ означают начало и конец входной строки (без этой части 23,45 строки, подобной 123,45, будут сопоставлены). \D означает цифру, \d? означает необязательную цифру, [,.] означает точку или запятую. Рабочий пример (когда вы нажимаете на левое меню> инструменты> генератор кода, вы можете генерировать код для одного из 9 популярных языков, таких как С#, js, php, java,...) здесь.
Что если у меня их много? Скажи 1.1.1.2