Примеры данных из твита:
Я всегда встречаю @gEmbul на #kampus, мы всегда открываем сайт https://www.youtube.com/ facebook # :) @007
дата - строка, я хочу совместить упоминание символом @, hastag с символом #, любым URL-адресом и специальным символом.
Я буду соответствовать hastag # перед hastag и за hastag
это мой код
var data = "I always meet @gEmbul at #kampus we always open the site https://www.youtube.com/ facebook# :) @007"
function clean(data) {
data = data.replace(/(?:https?|ftp):\/\/[\n\S]+/g, '')
.replace(/\B\@\w\w+\b/g, '')
.replace(/\B\#\w\w+\b/g, '');
return data;
}
console.log(clean(data))
я вернусь
я всегда встречаюсь у нас всегда открыт сайт
Благодарю.
Я предлагаю немного уменьшить шаблон (2 регулярных выражения, которые вы отличаетесь только на 1 символ, и это можно сделать с помощью символьного класса [#@]
, и поскольку вы удаляете совпадения, вы можете просто комбинировать регулярные выражения с помощью оператора |
):
var data = "I always meet @gEmbul at #kampus we always open the site https://www.youtube.com/ facebook# :) @007"
function clean(data) {
data = data.replace(/(?:https?|ftp):\/\/[\n\S]+|\B[@#]\w+\b|\b\w+[@#]\B|\B[^\w\s]{2,}\B/g, '');
return data;
}
document.body.innerHTML = clean(data);
Детали:
(?:https?|ftp):\/\/[\n\S]+
- регулярное выражение, которое соответствует URL-адресу, который может охватывать строки новой строки|
- или же\B[@#]\w+\b
- это @
или #
следуют с 1+ символов слова (как целое слово)|
- или же\b\w+[@#]\B
- 1+ слова с символами @
или #
(в целом)|
- или же\B[^\w\s]{2,}\B
- неглавная граница, 2 или более символов, кроме слова и пробела, и снова граница неслов. Удалите \B
чтобы сопоставить 2 или более символа без пробелов/без слов в любом контексте.