Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Google应用程序脚本正则表达式以获取一个人的姓氏_Regex_Google Apps Script - Fatal编程技术网

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