using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"#проверка ФИО
#https://www.bbc.co.uk/academy/ru/articles/art20170623191659259
#https://www.regular-expressions.info/unicode.html
^
(?!^\s*[\p{Pd}’'])
(?![\s\S]*[\p{Pd}’']\s*$)
(?![\s\S]*?’’)
(?![\s\S]*?'')
#русские и английские буквы не могут быть одновременно
(?: (?![\s\S]*[aeiouyAEIOUY]{4}) #no 4 vowel letters sequentially
(?![\s\S]*[bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]{5}) #no 5 consonant letters sequentially
(?:[a-zA-Z\p{Pd}’']|(?![\r\n])\s)+
| (?![\s\S]*?[аеиоуыэюяёАЕИОУЫЭЮЯЁ]{4}) #не может содержать 4 гласных буквы подряд (3 гласных буквы подряд есть в слове 'длинношеее')
(?![\s\S]*?[бвгджзклмнпрстфхцчшщйъьБВГДЖЗКЛМНПРСТФХЦЧШЩЙЪЬ]{6}) #не может содержать 6 согласных букв подряд (5 согласных букв подряд есть в фамилии 'Мкртчан')
(?:[а-яёА-ЯЁ\p{Pd}’']|(?![\r\n])\s)+
)
$";
string input = @"Ииии
Нннннн
Ttttt
Uuuu
АлисаTab
Алиса Tab
Иван'
-Alex
Жан-Клод Ван Дам
Алиса--Виктория
Алиса–Виктория
Алиса—Виктория
Иван Иванович Иванов
Динношееев
Мкртчан
д’Артаньян
Ali Baba
Jhon Smith";
RegexOptions options = RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.CultureInvariant;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx