JavaScript正则表达式在字符串中间找到单词

时间:2010-10-05 20:33:12

标签: javascript regex

我正在尝试从以下字符串中取出“Dave”这个名称(但根据登录者的不同而不同):

已登录:Dave - example.com

有关JS中正则表达式的最佳方法的任何想法吗?

3 个答案:

答案 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];
    }