我正在尝试从以下字符串中取出“Dave”这个名称(但根据登录者的不同而不同):
已登录:Dave - example.com
有关JS中正则表达式的最佳方法的任何想法吗?
答案 0 :(得分:2)
你真的不需要正则表达式。您可以使用a .slice()
of字符串,获取:
和-
using .indexOf()
的位置。
示例: http://jsfiddle.net/mkUzv/1/
var str = "Logged In: Dave - example.com";
var name = str.slice( str.indexOf(': ') + 2, str.indexOf(' -') );
编辑:正如 @cHao 所述,+ 2
应该被用来消除:
之后的空格。固定的。
答案 1 :(得分: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之间字母的单个名称,因为我不确定用户名的参数。您可以根据需要查找其他RegEx模式。
希望这有帮助!
答案 2 :(得分:-1)
在冒号处拆分,在空格处拆分,并取出该数组中的第二项,如:
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];
}