let pattern = /\b(?:(?:Mr|Miss|dr|lord)? )?((?:[A-Z]\w*(?:[ -][A-Z]\w*[.]?)*|[a-z]+(?: [a-z]+)))\b/;
let strings = [
"Mr Bob Smith",
"Miss Jessica Blue",
"tim white",
"dr Lisa S pink",
"lord Lee Kensington-Smithe",
"William R. Burroughs III"
];
strings.forEach(s => {
let m = s.match(pattern);
if (m) {
print(m[1].split(" ").map(s => s.charAt(0).toUpperCase()).join(""));
}
});
ICAgIGxldCBwYXR0ZXJuID0gL1xiKD86KD86TXJ8TWlzc3xkcnxsb3JkKT8gKT8oKD86W0EtWl1cdyooPzpbIC1dW0EtWl1cdypbLl0/KSp8W2Etel0rKD86IFthLXpdKykpKVxiLzsKICAgIGxldCBzdHJpbmdzID0gWwogICAgICAgICJNciBCb2IgU21pdGgiLAogICAgICAgICJNaXNzIEplc3NpY2EgQmx1ZSIsCiAgICAgICAgInRpbSB3aGl0ZSIsCiAgICAgICAgImRyIExpc2EgUyBwaW5rIiwKICAgICAgICAibG9yZCBMZWUgS2Vuc2luZ3Rvbi1TbWl0aGUiLAogICAgICAgICJXaWxsaWFtIFIuIEJ1cnJvdWdocyBJSUkiCiAgICBdOwoKICAgIHN0cmluZ3MuZm9yRWFjaChzID0+IHsKICAgICAgICBsZXQgbSA9IHMubWF0Y2gocGF0dGVybik7CgogICAgICAgIGlmIChtKSB7CiAgICAgICAgICAgIHByaW50KG1bMV0uc3BsaXQoIiAiKS5tYXAocyA9PiBzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpKS5qb2luKCIiKSk7CiAgICAgICAgfQogICAgfSk7