2015-06-25 77 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

其实它只是把前两个用户。我会尝试附上一个屏幕截图。 –