2017-06-26 223 views
0

我想从一个字符串中使用JS正则表达式匹配函数获取除一个单词外的所有单词。例如,对于字符串testhello123worldtestWTF,不包括单词test,结果将为helloworldWTF获取除一个特定单词外的所有单词

我意识到我必须使用预见功能来做,但我无法弄清楚具体是什么。我想出了以下正则表达式(?!test)[a-zA-Z]+(?=.*test),但它只是部分工作。

http://refiddle.com/refiddles/59511c2075622d324c090000

+2

可能重复的[如何替换JavaScript中出现的所有字符串?](https://stackoverflow.com/questions/1144783/how-to-replace-all-occurrences-of-a-string-in- javascript) –

+0

所以我注意到你的问题很奇怪。你说你想检查'测试',但在你的结果中,你还将测试结果与123一并删除。这是一个错字吗? –

+0

用“word”表示'[a-zA-Z] +',不带数字。 – streetturtle

回答

1

恕我直言,我会尝试用空字符串替换牵连的话,不是吗?

0

Lookarounds似乎是矫枉过正吧,您只需更换test什么也没有:

var str = 'testhello123worldtestWTF'; 
var res = str.replace(/test/g, ''); 
+0

问题是我想将所有找到的单词发生改为“单词”。所以我需要保留字测试的地方。对于'testhello123worldtestWTF',我想要的最终结果是['test','word','word','test','word'] – stee1rat

0

这堵到你refiddle产生的结果,你正在寻找:

/(test)/g 

它匹配所有出现的“测试”一词,而不会捡到不需要的单词/字母。你可以将它设置为你需要的任何变量。

0

注意

看到,你有你输入的字符串中没有设置分隔符的话,我必须说,你不能可靠地排除特定的词 - 在一定程度上。

例如,如果要排除test,如果输入为protesterrotatestreet,则可能会产生问题。你没有清楚地界定一个词的意思,因此当你不打算这样做时,你可以排除测试。另一方面,如果你只是想忽略字符串test无论如何,只需用空字符串替换test,你就很好。

相关问题