RegEx - анализ строки для конкретных слов - PullRequest
2 голосов
/ 08 апреля 2019

Я хочу проанализировать строку и найти все маркеры (@ name ) и поместить их каждый в один массив (но без @), чтобы я мог просмотреть их (с помощью forEach) и отправьте им предупреждение. Каждая ручка разделена пробелом.

Message example

Ответы [ 5 ]

2 голосов
/ 08 апреля 2019

Вы можете захватить @followedByName, а затем заменить @

let str = `@someName hey @someMoreNames`

let op = str.match(/(^|\s)@\w+/g).map(e=>e.trim().replace(/@/g,''))

console.log(op)
2 голосов
/ 08 апреля 2019

Если вам просто нужно извлечь пользователей из твита, вы можете использовать следующее регулярное выражение:

/@([a-zA-Z0-9]+)/g

Например:

var string = '@JohnSmith @DylanThompson Hey guys!';
var numberPattern = /@([a-zA-Z0-9]+)/g;

var res = string.match(numberPattern);

console.log(res);

Это вылилось бы:

["@JohnSmith", "@DylanThompson"]
1 голос
/ 08 апреля 2019

Вы можете объединить match для извлечения имен и slice для удаления @:

str = "@JohnSmith @DylanThompson Hey guys";
let arr = str.match(/@\w+/g).map(e=>e.slice(1));
console.log(arr);
1 голос
/ 08 апреля 2019

1001 * попробовать *

let str= "Here @ann and @john go to @jane";

let m= str.match(/@\w+/g).map(x=>x.replace(/./,''));
                              
m.forEach(x=> console.log(x));

Вы также можете использовать положительное выражение за регулярное выражение, но оно не поддерживается firefox пока (но оно является частью ES2018):

let str= "Here @ann and @john go to @jane";

let m= str.match(/(?<=@)\w+/g);

m.forEach(x=> console.log(x));

где (?<=@)\w+ соответствует слову, начинающемуся после @ (исключая этот символ - положительный взгляд позади )

0 голосов
/ 08 апреля 2019

Попробуйте:

var str= "Here @ann and @john go to @jane";
var patt = /@(\w+)/g;

while ( (arr = patt.exec(str)) !== null ) { console.log(arr[1]); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...