2010-10-05 70 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

相關問題