const regex = /^(\s+)?(((([a-zA-Z][a-zA-Z\-\–\`\'\’]+[a-zA-Z]+)(((\s+[a-zA-Z]+)|(\s+[a-zA-Z][a-zA-Z\-\–\`\'\’]+[a-zA-Z]+)))?)(((\s+[a-zA-Z]+)|(\s+[a-zA-Z][a-zA-Z\-\–\`\'\’]+[a-zA-Z]+)))?(((\s+[a-zA-Z]+)|(\s+[a-zA-Z][a-zA-Z\-\–\`\'\’]+[a-zA-Z]+)))?)|([a-zA-Z ]+))(\s+)?$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(\\s+)?(((([a-zA-Z][a-zA-Z\\-\\–\\`\\\'\\’]+[a-zA-Z]+)(((\\s+[a-zA-Z]+)|(\\s+[a-zA-Z][a-zA-Z\\-\\–\\`\\\'\\’]+[a-zA-Z]+)))?)(((\\s+[a-zA-Z]+)|(\\s+[a-zA-Z][a-zA-Z\\-\\–\\`\\\'\\’]+[a-zA-Z]+)))?(((\\s+[a-zA-Z]+)|(\\s+[a-zA-Z][a-zA-Z\\-\\–\\`\\\'\\’]+[a-zA-Z]+)))?)|([a-zA-Z ]+))(\\s+)?$', 'gm')
const str = ` ‘Dabes Zarger Gackett
Manes Hackett\` Barger
Modil Gobam ‘Nomes
Jarrett Bar,ger Hackett,
LuIs T’rivino
LuIs Triv,ino
Roofer ‘doores
Steven JR Morr's
Pakkir Ab’dul Kalam
Ku,mar
Pakkir A–bdul Kalam
Pakkir Ab–dul Kalam
Ar-t-hur
M
m
sp
Mayank S-hankar
mayank
shankar
jainuddin ad
jainuddin a
abd-ul
Pakkir A'bdul Kalam
Pakkir Ab’dul Kalam
Pakkir Ab'dul Kalam
Pakkir Ab\`dul Kalam
Kumar A
A kumar
Ku,mar
Pakkir A-bdul Kalam
Pakkir Ab-dul Kalam
Pakkir A–bdul Kalam
Pakkir Ab–dul Kalam
Pakkir Abdul Kalam`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
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 JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions