получить все слова, начинающиеся с символа @ - PullRequest
1 голос
/ 21 октября 2019

Я пытаюсь использовать это регулярное выражение для извлечения слов из строки, в начале которой есть @.

'@yoMan is going crazy with @yoker-wiy'.match(/\b@\S+\b/g)

Это не работает. Он работает только с алфавитами, но не с такими символами, как @ или #

Раньше я пытался /@(\w+)/g, но он исключает -wiy из слова yoker. Извините, с регулярным выражением не совсем хорошо.

Я думаю, что в этом вопросе есть дубликат, который я не могу найти. Спасибо за помощь.

Ответы [ 3 ]

1 голос
/ 21 октября 2019

Раньше я пытался / @ (\ w +) / g, но оно обнуляется - от слова yoker

Поскольку \ w включает alphabets ( both case ), digits and _, а не -, поэтому выполучить только utpo @yorker


Просто вы можете использовать split, filter и startsWith

let str = '@yoMan is going crazy with @yoker-wiy';
let final = str.split(/\s+/)
               .filter(v => v.startsWith('@'))
console.log(final)

С матчем можно использовать @[^\s]+

let str = '@yoMan is going crazy with @yoker-wiy';
let final = str.match(/@[^\s]+/g)
             
console.log(final)
0 голосов
/ 21 октября 2019

Вам нужно изменить границы слов (\b) на начало строки (^) и конец строки ($), и это будет работать.

console.log(
  '@yoMan is going crazy with @yoker-wiy'
    .split(/\s+/g)
    .filter(s => s.match(/^@\S+$/g))
);
.as-console-wrapper { top: 0; max-height: 100% !important; }
0 голосов
/ 21 октября 2019

const re = '@yoMan is going crazy with @yoker-wiy'.match(/(?:^|\W)@(\w+|^-)(?!\w)/g);
   console.log(re);

Это регулярное выражение, которое вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...