我正在尝试从以下字符串中提取名称“Dave”(但根据登录用户的不同,名称可能会有所不同):
已登录:Dave - example.com
您认为使用JS中的正则表达式最佳方法是什么?已登录:Dave - example.com
您认为使用JS中的正则表达式最佳方法是什么?例如:http://jsfiddle.net/mkUzv/1/
var str = "Logged In: Dave - example.com";
var name = str.slice( str.indexOf(': ') + 2, str.indexOf(' -') );
编辑:如@cHao所指出的,应该使用+2
来消除:
后面的空格。已修复。
// This is our RegEx pattern.
var user_pattern = /Logged In: ([a-z]+) - example\.com/i
// This is the logged in string we'll be matching the pattern against
var logged_in_string = "Logged In: Dave - example.com"
// Now we attempt the actual match. If successful, user[1] will be the user's name.
var user = logged_in_string.match(user_pattern)
我的例子很简单,只匹配包含a-z字母的单个名称,因为我不确定您对用户名的参数。您可以根据需要查找其他正则表达式模式。
希望这有所帮助!
在冒号处分割,在空格处分割,并取该数组中的第二个项目,如:
var thestring = "Logged In: Dave - example.com";
thestring = thestring.split(":");
thestring = thestring[1].split(" ");
thename = thestring[1]
或者,如果名称可以包含空格:
var thestring = "Logged In: Dave - example.com";
thestring = thestring.split(":");
thestring = thestring[1].split("-");
var x = thestring[0].length;
if (x > 4) {
var thename = thestring[0].replace(" ", "");
}
else {
thestring = thestring[0].split(" ");
thestring = thestring.split(" ");
thename = thestring[1] + " " + thestring[3];
}