2015-06-25 75 views
-3

我有這個字符串「rb40425,週五01月30日11時35分三十三秒2015 @ ot7293,週五揚......」JavaScript的正則表達式

我想使用JavaScript正則表達式只獲取用戶名,作爲rb40425和ot7293等等。

這是我目前有:

更換(/,.*/, 「」);

這隻返回第一個用戶名。

+5

你怎麼知道用戶名是什麼? –

+0

會'/ [a-z] {2} \ d +/g'工作嗎? –

回答

0

喜歡的東西

/[a-zA-Z0-9]+(?=,|$)/g 
  • [a-zA-Z0-9]+匹配一個或多個字母或digts。

  • (?=,)檢查上述模式中的匹配字符後面是,還是字符串末尾$

Regex Demo

var string = "rb40425,Fri Jan 30 11:35:33 [email protected],Fri Jan...."; 
console.log(string.match(/[a-zA-Z0-9]+(?=,|$)/g)); 
// => ["rb40425", "ot7293"] 

string = "d7922,Tue Mar 4 17:28:45 [email protected],Tue Mar 4 17:29:42 [email protected],Tue Mar 4 17:28:45 [email protected]"; 
console.log(string.match(/[a-zA-Z0-9]+(?=,|$)/g)); 
// => ["d7922", "ld7922", "rr7323", "ld7922"] 
+0

這實際上工作。非常感謝 –

+0

@ReazurRahman不客氣。做upvote並接受答案,如果你發現它們有用:) – nu11p01n73R

+0

所以我仍然無法顯示超過兩個用戶,當我有這樣的輸出:d7922,2月4日星期二17:28:45 2014 @ ld7922,Tue Mar 4 17:29:42 2014 @ rr7323,Tue Mar 4 17:28:45 2014 @ ld7922, –

0

可以在每個@符號分割字符串,然後.map()用戶的陣列,以只使用/,.*$/的用戶名的一個新的數組正則表達式從逗號開始匹配eveything。

像這樣:

var str = "rb40425,Fri Jan 30 11:35:33 [email protected],Fri Jan...."; 
var users = str.split('@') 
       .map(function(x){ return x.replace(/,.*$/, ''); }); 
console.log(users.join('\n')); 

如果你不想分割字符串,那麼你可以使用:

var users = str.replace(/,.*?(@|$)/g, ','); 
console.log(users); 

這將取代每個逗號和以下所有字符(但少儘可能),直到它找到一個@符號或字符串的結尾。

+0

所以我仍然無法顯示超過兩個用戶,當我有這樣的輸出:d7922,星期二4月17:28:45 2014 @ ld7922,星期二4月17:29:42 2014 @ rr7323,星期二4月4日17:28:45 2014 @ ld7922, –

+0

'var str =「d7922,Tue Mar 4 17:28:45 2014 @ ld7922,Tue Mar 4 17:29:42 2014 @ rr7323,Tue Mar 4 17:28:45 2014 @ ld7922「; var users = str.split('@')。map(function(x){return x.replace(/,.*$/,'');}); console.log(users.join('\ n'));'輸出4個用戶,我發佈的第二個方法也是如此。 – MT0

+0

其實它只是把前兩個用戶。我會嘗試附上一個屏幕截圖。 –