suman palla Ответов: 2

Формат регулярных выражений для XXXXXXXXX , XX-XXXXXXX , XXX-XX-XXXX


Всем Привет,

Может ли кто-нибудь, пожалуйста, предоставить мне формат регулярных выражений для приведенного ниже.

ХХХХХХХХХ,
XX-XXXXXXX
XXX-XX-XXXX

Что я уже пробовал:

i tried the below 
<pre>string pattern1= @"\d{9}|\d{3}-\d{2}-\d{4}|\d{3}-\d{6}|\d{5}-\d{4}";

string pattern2 = @"[1-9]\d{8}|[1-9]\d?-\d{7}";

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
\d{9}|\d{3}-\d{2}-\d{4}|\d{3}-\d{6}|\d{5}-\d{4}

В чем проблема с этим регулярным выражением?
Совет: используйте Debuggex, чтобы увидеть хороший график и проверить свои данные.

Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Онлайн-тестер регулярных выражений и отладчик: PHP, PCRE, Python, Golang и JavaScript[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение: Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]
Этот сайт также показывает регулярное выражение в красивом графике, но не может проверить, что соответствует регулярному выражению: Regexper[^]


Рейтинг:
0

OriginalGriff

Прежде всего, решите, какой язык вы используете: решение JS не будет идентично решению Java или C#.

Предполагая, что C#, ваше выражение работает нормально:

string pattern1 = @"\d{9}|\d{3}-\d{2}-\d{4}|\d{3}-\d{6}|\d{5}-\d{4}";
Regex reg = new Regex(pattern1);
if (reg.IsMatch("123456789")) Console.WriteLine("9 OK");
if (reg.IsMatch("123-45-6789")) Console.WriteLine("3-2-4 OK");
if (reg.IsMatch("123-456789")) Console.WriteLine("3-6 OK");
if (reg.IsMatch("12345-6789")) Console.WriteLine("5-4 OK");
Дает:
9 OK
3-2-4 OK
3-6 OK
5-4 OK
Единственное различие, которое я бы сделал, - это добавить начальные и конечные символы строки:
string pattern1 = @"^\d{9}|\d{3}-\d{2}-\d{4}|\d{3}-\d{6}|\d{5}-\d{4}$";
Regex reg = new Regex(pattern1);
Так в чем же проблема?