Regex Google应用程序脚本正则表达式以获取一个人的姓氏

Regex Google应用程序脚本正则表达式以获取一个人的姓氏,regex,google-apps-script,Regex,Google Apps Script,我试图写一个正则表达式来得到一个人的姓 var name = "My Name"; var regExp = new RegExp("\s[a-z]||[A-Z]*"); var lastName = regExp(name); Logger.log(lastName); 如果我理解正确,\s应该在我的和姓名之间找到空格,[a-z]|[a-z]将得到下一个字母,然后*将得到其余的字母。如果有人能帮上忙,我将不胜感激。您可以使用以下正则表达式: var name = "John Smith"

我试图写一个正则表达式来得到一个人的姓

var name = "My Name";
var regExp = new RegExp("\s[a-z]||[A-Z]*");
var lastName =  regExp(name); 
Logger.log(lastName);

如果我理解正确,
\s
应该在
我的
姓名
之间找到空格,
[a-z]|[a-z]
将得到下一个字母,然后
*
将得到其余的字母。如果有人能帮上忙,我将不胜感激。

您可以使用以下正则表达式:

var name = "John Smith";
var regExp = new RegExp("(?:\\s)([a-z]+)", "gi"); // "i" is for case insensitive
var lastName = regExp.exec(name)[1];
Logger.log(lastName); // Smith
但是,根据您的需求,只需使用
.split()

.substring()
(如果有多个“姓氏”,则很有用):


谢谢你的选择。非常有用。只是一个关于正则表达式的简单问题。如果我理解正确:()括号意味着先评估它?:意味着不记录到正则表达式中\s是空白。额外的“\”是什么用途?
([a-z]+)
中的
()
实际上是用于。它允许我们以后再次使用匹配的部件
(?:)
(此处的
()
是必填项)的意思相反,不包括此组,因此只需将
()
用作常规
()
,用于将运算符应用于多个表达式(如在
(\s\w)+
中,
(\s\w)
将是一个组。在
(?:\s\w)+
中不是)。额外的
\
是必需的,因为您的正则表达式是使用
RegExp
构造函数声明的,并且它获取一个字符串作为参数。因此,需要将
\
转义为
\\
。让我知道它是否清楚!
var name = "John Smith";
var lastName = name.split(" ")[1];
Logger.log(lastName); // Smith
var name = "John Smith Smith";
var lastName = name.substring(name.indexOf(" ")+1, name.length); 
Logger.log(lastName); // Smith Smith