2010-10-05 87 views

回答

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) 

我的例子是懒惰,只有AZ之间包含字母,因为我不知道的一个名称相匹配您的用户名参数。您可以根据您的需求查找其他RegEx模式。

希望这会有所帮助!

+0

这工作得很好!谢了哥们。 – dave 2010-10-05 20:52:58

-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]; 
    } 
+0

如果该名称恰好包含空格,将会中断。 – cHao 2010-10-05 20:41:25

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而不是+1吗?该空间不应该是名称的一部分... – cHao 2010-10-05 20:44:52

+0

@cHao - 非常好的一点。我会更新。谢谢。 :o) – user113716 2010-10-05 20:45:42

+1

为了论证的缘故,使用正则表达式的好处可能在于,它允许将待提取文本嵌入的“逻辑”与嵌入式Javascript代码分开。因此,如果出于某种原因该“登录”字符串发生了变化,您所要做的就是修复正则表达式,并且使用它的代码可能(可能)保持不变。不过,我同意这可能是矫枉过正。 – Pointy 2010-10-05 20:47:15