2015-02-09 2 views
-1

Мне было интересно, может ли кто-нибудь предоставить мне инструкцию JavaScript RegEx, чтобы отфильтровать текст из всех #tags в поле ввода.Возвращает массив строк после фильтрации #tags

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

Пример: Вход- # tag1, # tag2, # tag3 ...

Вывод: массив [tag1, tag2 TAG3 ...]

Заранее спасибо ..

+0

Это простая задача. У вас возникли проблемы с созданным вами регулярным выражением? – jdphenix

ответ

0

просто использовать:

/(#\w+)+/gmi 

И в списке регулярных выражений матчей, вы будете иметь все теги в массиве. Это выражение поддерживает только буквы, цифры и символы подчеркивания - просто отрегулируйте \w, если вы хотите расширить или ограничить набор символов.

Вот regex101 играть с: https://regex101.com/r/pJ8vA4/2

Javascript должен выглядеть примерно так:

var string = '#tag1, #tag2, #tag3 some other stuff #tag4'; 
var tags = string.match(/(#\w+)+/gmi); 
tags = result.map(function(tag) { return tag.replace('#', '') }); 
console.log(tags); 
+0

@ NewUser07 добавил просто функцию карты, чтобы удалить # из результатов. – brandonscript

+0

Спасибо Ремус :) – NewUser07

0

Это место для вопросов, а не для того, чтобы кто-то сделал вам код. Но я все равно отвечу.

(\s?#[a-zA-Z0-9]+,?)+ 

-разделенного необязательное белого пространство и необязательные запятыми -make обязательно обрезать белое пространство выключить начало и конец возвращаемых значений (в то время как цикл) -такж удалить хэш-тег (первый символов после обрезки) -link для вашего примера https://regex101.com/r/rT2aC5/1

редактирование: также не включает специальные символы. Дайте мне знать, если вам нужна специальная модификация, и я буду делать это очень быстро для вас :)

0
var input = "#tag1, #tag2, #tag3"; 
var regex = new RegExp(/#(\w+),?\s?/gi); 
var match = null; 
var results = []; 

while (match = regex.exec(input)){ 
    results.push(match[1]); 
} 

Это даст вам множество результатов, которые: [ "tag1", " tag2 "," tag3 "]

+0

Спасибо, Dmitriy – NewUser07

+0

Голосовать, если вы сочтете это полезным :) –