2015-06-25 2 views
-3

У меня есть эта строка «rb40425, пт 30 январь 11:35:33 2015 @ ot7293, Пт Я ....»Javascript Regex

Я хотел бы использовать яваскрипт Regex только получить имя пользователя такого как 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, Вт. Mar 4 17:28:45 2014 @ ld7922, Tue Mar 4 17:29:42 2014 @ rr7323, Вт 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 марта 17:28:45 2014 @ ld7922, –

+0

'var str =" d7922, вт 4 мар 17:28:45 2014 @ ld7922, Вт мар 4 17:29:42 2014 @ rr7323, Вт мар 4 17:28:45 2014 @ ld7922 "; var users = str.split ('@'). Map (function (x) {return x.replace (/,.*$/, '');}); console.log (users.join ('\ n')); 'выводит 4 пользователя, а также второй метод, который я опубликовал. – MT0

+0

на самом деле это всего лишь сдача первых двух пользователей.Я попытаюсь прикрепить снимок экрана. –