2016-08-19 3 views
0
Regex rgx = new Regex(@"/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i"); 

bool result = rgx.IsMatch("PPPPLT80R10M082K"); 

MessageBox.Show(result.ToString()); 

Это регулярное выражение для итальянского налогового кода. Он должен работать, я также пробовал на regex101.com, и он не дает никаких ошибок: See also here Проблема в том, что при запуске кода результат всегда является ложным. Что я сделал не так? Заранее спасибоRegex return always false C#

+0

Да, ваше регулярное выражение * рисунок * работает. Разделители выражений и модификаторы не являются частью шаблона, и вы должны предоставить шаблон в качестве аргумента конструктору Regex. Используйте 'new Regex (@"^[AZ] {6} \ d {2} [AZ] \ d {2} [AZ] \ d {3} [AZ] $ ", RegexOptions.IgnoreCase)' –

+0

BTW, regex101 не поддерживает .NET regex. –

+0

Также проверяйте свои регулярные выражения на сайте, который на самом деле использует C#, например http://regexstorm.net/ – juharr

ответ

0

Просто удалите окружение / из вашего регулярного выражения, в .NET ему не нужно.

Нечувствительность к регистру может быть указана с использованием RegexOptions.IgnoreCase второго аргумента конструктора Regex.

Regex rgx = new Regex(@"^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$", RegexOptions.IgnoreCase); 
+0

Спасибо, что сработал –