2013-07-10 2 views
5

Ich versuche eine Regex zu schreiben, um den Nachnamen einer Person zu erhalten.Google Apps Script Regulärer Ausdruck, um den Nachnamen einer Person zu erhalten

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

Wenn ich das richtig verstanden \s sollte den weißen Raum zwischen My und Name finden, [a-z]||[A-Z] würde den nächsten Brief bekommen, dann * würde den Rest bekommen. Ich würde einen Tipp schätzen, wenn jemand helfen könnte.

Antwort

12

können Sie die folgende regex verwenden:

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 

Aber von Ihren Anforderungen entspricht, ist es einfacher, nur verwenden .split():

var name = "John Smith"; 
var lastName = name.split(" ")[1]; 
Logger.log(lastName); // Smith 

Oder .substring() (nützlich, wenn es mehr als ein " Nachnamen "):

var name = "John Smith Smith"; 
var lastName = name.substring(name.indexOf(" ")+1, name.length); 
Logger.log(lastName); // Smith Smith 
+0

Danke für die Alternativen. Sehr hilfreich. Nur eine kurze Frage über die Regex. Wenn ich es richtig verstehe: () Klammern bedeuten, diese zuerst auszuwerten ?: bedeutet nicht in die Regex aufnehmen \ s ist Leerraum Was ist der Zweck der zusätzlichen "\"? – user1682683

+3

Die '()' in '([a-z] +)' ist eigentlich für [Gruppierung] (http://www.regular-expressions.info/brackets.html). Es erlaubt uns, das angepasste Teil später wieder zu verwenden. '(? :)' (die '()' sind hier obligatorisch) bedeutet das Gegenteil, nicht diese Gruppe, verwenden Sie einfach die '()' als reguläre '()', nützlich für die Anwendung von Operatoren auf mehrere Ausdrücke (wie in '(\ s \ w) +', '(\ s \ w)' wäre eine Gruppe. In '(?: \ s \ w) +' ist es nicht.). Das zusätzliche '\ 'ist notwendig, weil Ihre Regex mit dem' RegExp'-Konstruktor deklariert wurde und eine Zeichenkette als Parameter erhält. Daher das Bedürfnis nach '\' als '\\' zu entkommen. Lass es mich wissen, wenn es klar ist! – acdcjunior

Verwandte Themen