2015-02-09 30 views
-1

我想知道是否有人可以提供給我一個JavaScript RegEx語句,用於從輸入框中的所有#tags中濾除文本。過濾後返回字符串數組#tags

場景:我有一個用戶輸入文本框,用戶可以輸入多個#標籤。我想要做的是在刪除特殊字符並將其保存到數據庫之後,將所有文本濾出並存儲在數組中。

示例:輸入 - #TAG1,TAG2#,#TAG3 ...

輸出:數組[TAG1,TAG2,TAG3 ...]

預先感謝..

+0

這是一個簡單的任務。您是否已經創建了正則表達式? – jdphenix 2015-02-09 21:18:30

回答

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 2015-02-09 21:37:05

+0

謝謝你Remus :) – NewUser07 2015-02-09 21:45:11

0

這是一個問題的地方,而不是讓別人來編碼的地方。但我仍然會回答。

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

通過一個可選的空格和逗號可選 - 確保修剪返回值的空白關的開頭和結尾(而循環) - 也刪除散列標籤(第1個字符 - 分隔修剪後) - 你的例子的鏈接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]); 
} 

這會給你一個結果陣列上: 「標籤1」,「 tag2「,」tag3「]

+0

謝謝你Dmitriy – NewUser07 2015-02-09 21:45:29

+0

如果覺得有用,請投票:) – 2015-02-19 19:18:32