2012-09-07 159 views
0

試圖形成一個正則表達式匹配關鍵字的方式,我找到這個模式,就像JavaScript的 - 正則表達式

  • 刪除發生:之前的所有單詞,直到一個空間和發生:畢竟的話,直到)

this jsfiddle找到該術語。

var newInput="keyword2:(content2) app keyword1:(content1) sos keyword:(content) das sad"; 

進出口尋找的輸出像

app,sos,das,sad 
+0

它必須是正則表達式?您可以通過空格分隔空格並篩選以'keyword'開頭的項目。 – Jeff

+0

它不一定是術語關鍵字...它可以是隨機單詞... – Sam

回答

2
newInput.replace(/[^:\s]+:\([^)]*\)\s*/g, ''); // "app sos das sad" 

說明

 
[^:\s]+: # any character (except ' ' and ':') in front of ':' "keyword1:'" 
\([^)]*\) # any character enclosed in '(' ')'     "(content2)" 
\s*  # trailing spaces          " " 

這將返回一個空格分開的字符串。你將不得不修剪它並自己拆分(或替換它們)。

+0

檢查輸入「keyword2:(content2)app keyword1: (內容1)「; – Sam

+0

@Sam下一次,在定義輸入方面做得更好。對於正則表達式問題,答案只能和問題一樣好。 – Tomalak

+0

我很高興,但是這個模式有相同的模式..對吧? – Sam

1

你可以試試:

var words = newInput.replace(/[^\s]+:\([^\)]+\)\s+/g, "").split(/\s+/); 

將產生的單詞的數組爲:

["app", "sos", "das", "sad"] 

如果你想有一個逗號分隔的字符串,如圖接下來的問題:

var words = newInput.replace(/[^\s]+:\([^\)]+\)\s+/g, "").split(/\s+/).join(", ") 
+0

檢查輸入「1關鍵字:(內容2)的應用程序關鍵字1:(內容1)」; – Sam

+0

好的,對不起。我承認我在問題中發現你的描述有點令人困惑,並且你沒有展示這樣的例子,但我想你可以將正則表達式模式改爲'/ [^ \ s] +:\([^ \)] + \)\ s */g'(即將最後一個'+'改成'*'以匹配可選的空格),然後修剪結果中的空格。 – nnnnnn