[0-9]+(\.[0-9][0-9]?)?
Прежде всего, я рекомендую проверить либо regexr.com, либо regex101.com, чтобы вы сами поняли, как работает регулярное выражение. Оба веб-сайта дадут вам пошаговое объяснение того, что делает каждый символ в регулярном выражении.
Теперь одна из основных вещей, которую вы должны понять, это то, что регулярное выражение имеет специальные символы. Это включает, среди прочего, следующее: []().-+*?\^$
. Итак, если вы хотите, чтобы ваше регулярное выражение соответствовало, например, буквальному .
, вам придется его экранировать, поскольку это специальный символ. Для этого используйте либо \.
, либо [.]
. Обратная косая черта служит для экранирования других символов, а []
означает «соответствует любому из символов в этом наборе». Некоторые специальные символы не имеют специального значения внутри этих скобок и не требуют экранирования.
Следовательно, приведенное выше регулярное выражение будет соответствовать любой комбинации цифр длиной 1 или более, за которыми следует необязательный суффикс (foobar)?
, который должен быть точкой, за которой следует одна или две цифры. На самом деле, это регулярное выражение больше похоже на то, что оно должно сопоставлять десятичные числа с двумя цифрами после точки, а не телефонные номера.
/^[0-9()]+$/
То, что это делает, довольно просто - соответствует любой комбинации цифр или круглых скобок, которая имеет длину 1 или больше.
[0-9().+\s?](\.[0-9][0-9]?)?
То, что вы сопоставляете здесь, это:
- одно из: цифра, круглая скобка, точка, плюс, пробел или вопросительный знак; но ровно один раз только!
- необязательно, за которым следует точка и одна или две цифры
Подходящим регулярным выражением для вашей цели может быть:
(\+\d{2})?((\(0\)\d{2,3})|\d{2,3})?\d+
Введите это на одном из упомянутых выше веб-сайтов, чтобы понять, как это работает. Я немного изменил его, чтобы также разрешить, например, +49 123 4567890. Кроме того, для простоты я не включил пробелы, поэтому при использовании этого регулярного выражения вы должны сначала удалить все пробелы в своем вводе. В C# это должно быть возможно с помощью yourString.Replace(" ", "");
(простая замена всех пробелов ничем = удаление пробелов)
01.02.2018