#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)(?(DEFINE)" & @CRLF & _
" (?# Definitions )" & @CRLF & _
" (?<valid_nameChars>[\p{L}\p{Nl}])" & @CRLF & _
" (?<valid_nonNameChars>[^\p{L}\p{Nl}\p{Zs}])" & @CRLF & _
" (?<valid_startFirstName>(?![a-z])[\p{L}'])" & @CRLF & _
" (?<valid_upperChar>(?![a-z])\p{L})" & @CRLF & _
" (?<valid_nameSeparatorsSoft>[\p{Pd}'])" & @CRLF & _
" (?<valid_nameSeparatorsHard>\p{Zs})" & @CRLF & _
" (?<valid_nameSeparators>(?&valid_nameSeparatorsSoft)|(?&valid_nameSeparatorsHard))" & @CRLF & _
" (?# Invalid combinations )" & @CRLF & _
" (?<invalid_startChar>^[\p{Zs}a-z])" & @CRLF & _
" (?<invalid_endChar>.*[^\p{L}\p{Nl}.\p{C}]$)" & @CRLF & _
" (?<invalid_unaccompaniedSymbol>.*(?&valid_nameSeparatorsHard)(?&valid_nonNameChars)(?&valid_nameSeparatorsHard))" & @CRLF & _
" (?<invalid_overTwoUpper>(?:(?&valid_nameChars)*\p{Lu}){3})" & @CRLF & _
" (?<invalid>(?&invalid_startChar)|(?&invalid_endChar)|(?&invalid_unaccompaniedSymbol)|(?&invalid_overTwoUpper))" & @CRLF & _
" (?# Valid combinations )" & @CRLF & _
" (?<valid_name>(?:(?:(?&valid_nameChars)|(?&valid_nameSeparatorsSoft))*(?&valid_nameChars)+(?:(?&valid_nameChars)|(?&valid_nameSeparatorsSoft))*)+\.?)" & @CRLF & _
" (?<valid_firstName>(?&valid_startFirstName)(?:\.|(?&valid_name)*))" & @CRLF & _
" (?<valid_multipleName>(?&valid_firstName)(?=.*(?&valid_nameSeparators)(?&valid_upperChar))(?:(?&valid_nameSeparatorsHard)(?&valid_name))+)" & @CRLF & _
" (?<valid>(?&valid_multipleName)|(?&valid_firstName))" & @CRLF & _
")" & @CRLF & _
"^(?!(?&invalid))(?&valid)$"
Local $sString = "== 1NcOrrect N4M3S ==" & @CRLF & _
"CAPITAL LETTER" & @CRLF & _
"AlTeRnAtE LeTtEr" & @CRLF & _
"Natalia maria" & @CRLF & _
"Natalia aria" & @CRLF & _
"Natalia orea" & @CRLF & _
"Maria dornelas" & @CRLF & _
"Samuel eto'" & @CRLF & _
"Miguel lasagna" & @CRLF & _
"Antony1 de Home Ap*ril" & @CRLF & _
"Ap*ril Willians" & @CRLF & _
"Antony_ de Home Apr+il" & @CRLF & _
"Ant_ony de Home Apr#il" & @CRLF & _
"Antony@ de Ho@me Apr^il" & @CRLF & _
"Maria Silva" & @CRLF & _
"Maria silva" & @CRLF & _
"maria Silva" & @CRLF & _
" Maria Silva" & @CRLF & _
"Maria Silva " & @CRLF & _
"Maria / Silva" & @CRLF & _
"Maria . Silva" & @CRLF & _
"John W8" & @CRLF & _
"" & @CRLF & _
"==Correct Names==" & @CRLF & _
"Urxan Əbűlhəsənzadə" & @CRLF & _
"İsmət Jafarov" & @CRLF & _
"Şükür Hagverdiyev" & @CRLF & _
"Űmid Abdurrahimov" & @CRLF & _
"Ġerardo Seralta" & @CRLF & _
"Ċikku Paris" & @CRLF & _
"Hind ibn Sheik" & @CRLF & _
"Colop-U-Uichikin" & @CRLF & _
"Lażżru Role" & @CRLF & _
"Alaksiej Taraškievič" & @CRLF & _
"Petruso Husoǔski" & @CRLF & _
"Sumu-la-El" & @CRLF & _
"Valeh ßlÿsgÿroğlu" & @CRLF & _
"'Arab al-Rashayida" & @CRLF & _
"Tariq al-Hashimi" & @CRLF & _
"Nabeeh el-Mady" & @CRLF & _
"Tariq Al-Hashimi" & @CRLF & _
"Brian O'Conner" & @CRLF & _
"Maria da Silva" & @CRLF & _
"Maria Silva" & @CRLF & _
"Maria G. Silva" & @CRLF & _
"Maria McDuffy" & @CRLF & _
"Getúlio Dornelles Vargas" & @CRLF & _
"Maria das Flores" & @CRLF & _
"John Smith" & @CRLF & _
"John D'Largy" & @CRLF & _
"John Doe-Smith" & @CRLF & _
"John Doe Smith" & @CRLF & _
"Hector Sausage-Hausen" & @CRLF & _
"Mathias d'Arras" & @CRLF & _
"Martin Luther King Jr." & @CRLF & _
"Ai Wong" & @CRLF & _
"Chao Chang" & @CRLF & _
"Alzbeta Bara" & @CRLF & _
"Marcos Assunção" & @CRLF & _
"Maria da Silva e Silva" & @CRLF & _
"Juscelino Kubitschek de Oliveira" & @CRLF & _
"Maria da Costa e Silva" & @CRLF & _
"Samuel Eto'o" & @CRLF & _
"María Antonieta de las Nieves" & @CRLF & _
"Eugène" & @CRLF & _
"Antòny de Homé April" & @CRLF & _
"àntony de Home ùpril" & @CRLF & _
"Antony de Home Aprìl" & @CRLF & _
"Pierre de l'Estache" & @CRLF & _
"Pierre de L'Estoile" & @CRLF & _
"Akihito" & @CRLF & _
"Nadine Schröder" & @CRLF & _
"Anna A. Møller" & @CRLF & _
"D. Pedro I" & @CRLF & _
"Pope Benedict XVI" & @CRLF & _
"Marsibil Ragnarsdóttir" & @CRLF & _
"Natanaël Morel" & @CRLF & _
"Isaac De la Croix" & @CRLF & _
"Jean-Michel Bozonnet" & @CRLF & _
"Qutaibah Mu'tazz Abadi" & @CRLF & _
"Rushd Jawna' Kassab" & @CRLF & _
"Khaldun Abdul-Qahhar Sabbag" & @CRLF & _
"'Awad Bashshar Asker" & @CRLF & _
"Al B. Zellweger" & @CRLF & _
"Gunnleif Snæ-Ulfsson" & @CRLF & _
"Käre Toresson" & @CRLF & _
"Sorli Ærnmundsson" & @CRLF & _
"Arnkel Øystæinsson" & @CRLF & _
"Ástríður Dórey" & @CRLF & _
"Åsmund Kåresson" & @CRLF & _
"Yahatti-Il" & @CRLF & _
"Ipqu-Annunitum" & @CRLF & _
"Nabu-zar-adan" & @CRLF & _
"Eskopas Cañaverri" & @CRLF & _
"Botolph of Langchester" & @CRLF & _
"Aelfhun the Cantrell" & @CRLF & _
"Fraco di Natale" & @CRLF & _
"Fraco Di Natale" & @CRLF & _
"Iván de Luca" & @CRLF & _
"Iván De Luca" & @CRLF & _
"Man'nah" & @CRLF & _
"Atabala Aüamusalü" & @CRLF & _
"Ramiz Ağasəfalu" & @CRLF & _
"Dadaş Aghakhanov" & @CRLF & _
"Fÿrxad Mübarizlı" & @CRLF & _
"Vaclaǔ Šupa" & @CRLF & _
"Yakiv Volacič" & @CRLF & _
"Flor Van Vaerenbergh" & @CRLF & _
"Flor van Vaerenbergh" & @CRLF & _
"Edwin van der Sar" & @CRLF & _
"Husein Ekmečić" & @CRLF & _
"Álvaro Guimarães Alencar" & @CRLF & _
"Phone U Yaza Arkar" & @CRLF & _
"Seocan MacGhille" & @CRLF & _
"X'wat'e Tlekadugovy" & @CRLF & _
"Albert-Jan Bootsveld" & @CRLF & _
"Maurits-jan Kuipers op den Kollenstaart" & @CRLF & _
"Elco ter Hoek" & @CRLF & _
"Robbert te Poele" & @CRLF & _
"Aad ten Have" & @CRLF & _
"'Ehu Kali" & @CRLF & _
"Ho'opa'a Loni" & @CRLF & _
"Aukanai'i Mahi'ai" & @CRLF & _
"Kalman ben Tal El" & @CRLF & _
"Żytomir Roszkowski" & @CRLF & _
"K'awai" & @CRLF & _
"" & @CRLF & _
"==EXTRA== only if possible, strange ones" & @CRLF & _
"Maol-Moire Mac'IlleBhuidh" & @CRLF & _
"Tòmas MacIlleChruim" & @CRLF & _
"Aindreas MacIllEathain" & @CRLF & _
"Eanruig MacGilleBhreac" & @CRLF & _
"Peadar MacGilleDhonaghart" & @CRLF & _
"Maolmhuire MacGill-Eain" & @CRLF & _
"Eanruig MacGilleBhreac" & @CRLF & _
"Wim van 't Plasman"
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "Result")
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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm