2012-09-07 116 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