我有一个包含全名的字符串。
全名的格式可能有也可能没有称呼。在称呼之后也可能有也可能没有一段时间(可以显示为先生或先生)。例如,我可以收到:
我的目标是从全名字符串中删除称呼。一旦称呼被删除,我想从全名中解析出名字。我是正则表达式的新手,但我确实理解如何解析名字。我不知道怎么办的一部分就是摆脱称呼。
var string = "Ella Anderson"
var first = string.replace(/\s.*$/, "").toUpperCase().trim();
答案 0 :(得分:2)
这个正则表达式应该可行。
var regex = /(Mr|MR|Ms|Miss|Mrs|Dr|Sir)(\.?)\s/,
fullNames = ["Mrs. Ella Anderson", "Ella Anderson", "Miss Jennifer Sply", "Mr. Dan Johnson", "Damien Hearst"];
var names = fullNames.map(function(name) {
var match = regex.exec(name),
n = "";
(match !== null) ? n = name.replace(match[0], "") : n = name;
return n;
});
console.log(names);

答案 1 :(得分:1)
问题是全名首先是字符串。如果可能的话,您应该将其更改为仅使用单独的字段。
没有人知道用户将在文本框中输入什么内容。也不可能可靠地确定剩余名称的哪一部分是名字,以及姓氏的哪一部分。
如果输入数据被正确分开,您将不再需要弄清楚什么是什么。
因此,如果可能,请将输入名称的方式更改为:
<select name="select">
<option>Miss</option>
<option>Mrs</option>
<option>Mr</option>
<option>etc...</option>
</select>
<input placeholder="First name" />
<input placeholder="Surname" />
&#13;
答案 2 :(得分:0)
您可以使用此正则表达式:/((Mrs|Mr|Miss)\.? )?([^ ]*) ?([^ ]*)/
示例:
var regex = /((Mrs|Mr|Miss)\.? )?([^ ]*) ?([^ ]*)/;
regex.exec('Mrs. Ella Anderson') == ["Mrs. Ella Anderson", "Mrs. ", "Mrs", "Ella", "Anderson"];
regex.exec("Ella Anderson") == ["Ella Anderson", undefined, undefined, "Ella", "Anderson"];
regex.exec("Miss Jennifer Sply") == ["Miss Jennifer Sply", "Miss ", "Miss", "Jennifer", "Sply"];
regex.exec("Mr. Dan Johnson") == ["Mr. Dan Johnson", "Mr. ", "Mr", "Dan", "Johnson"];
regex.exec("Damien Hearst") == ["Damien Hearst", undefined, undefined, "Damien", "Hearst"];
regex.exec("Missy Jennifer") == ["Missy Jennifer", undefined, undefined, "Missy", "Jennifer"];
如果你想要名字和姓氏,你只需要查看数组的最后两个值。
当然,这个正则表达式不会像`Mr.约翰史密斯少年。如果你想要通用的东西,不要使用正则表达式。
答案 3 :(得分:0)
这是一个相当复杂的正则表达式:
/^(?:(Miss|M[rs]{1,2})\.?\s+)?(\S+)\s+(\S+)$/
然后,如果你想要中间名或缩写,它会变得像jr一样棘手。或者sr。 - 这几乎都是可行的。关于如何处理连字符有一些问题。
答案 4 :(得分:0)
您可以使用以下正则表达式:^[ \t]*(?<title>(Shri|Leu|DR|mrs|SMT|Major|Gen){1,10}(\.|,))?\s*(?<LstName>[A-Z][a-z-']{2,20}),? +(?<FstName>[A-Z,a-z]+)*[ \t]*[^\n]*
在以下测试数据上进行了测试:
Major. Amator Gary L
Mrs. Grundy Ronald
Dr. Domsky Alan
Shri. Worden Scott Allen
Rodriguez Howard W
NEHME ALLEN
RODRIGUEZ CHARLES G
VERGARA WILLIAM F J
EVELYN J
Leu. GLICK, JACOB L.
SMT. Taylor-garcia Dottielou