我想使用JS正则表达式匹配函数从一个字符串中获取所有单词,除了一个单词。例如,对于字符串testhello123worldtestWTF,排除单词test,结果将是helloworldWTF。我意识到我必须使用前瞻函数来完成它,但我不能确切地计算出如何。我想出了下面的正则表达式(?!test)[a-zA-Z]+(?=.*test),但是,它只能部分工作。
testhello123worldtestWTF
test
helloworldWTF
(?!test)[a-zA-Z]+(?=.*test)
new9mtju1#
恕我直言,我会尝试用一个空字符串来代替有罪的词,不是吗?
fykwrbwg2#
Lookarounds似乎是一个矫枉过正,你可以只替换test与什么:
var str = 'testhello123worldtestWTF'; var res = str.replace(/test/g, '');
ghg1uchk3#
将其插入您的refiddle会产生您正在寻找的结果:
/(test)/g
它匹配单词“test”的所有出现,而不会拾取不需要的单词/字母。你可以把它设置为任何你需要保存这些的变量。
yrdbyhpb4#
注意事项
由于在输入的字符串中没有设置分隔符,我必须说,在某种程度上,您无法可靠地排除特定的单词。例如,如果要排除test,则如果输入是protester或rotatestreet,则可能会产生问题。你没有一个词是什么的明确界限,因此导致你在你可能不想的时候排除test。另一方面,如果你只是想忽略字符串test,只要用一个空字符串替换test就可以了。
protester
rotatestreet
4条答案
按热度按时间new9mtju1#
恕我直言,我会尝试用一个空字符串来代替有罪的词,不是吗?
fykwrbwg2#
Lookarounds似乎是一个矫枉过正,你可以只替换
test
与什么:ghg1uchk3#
将其插入您的refiddle会产生您正在寻找的结果:
它匹配单词“test”的所有出现,而不会拾取不需要的单词/字母。你可以把它设置为任何你需要保存这些的变量。
yrdbyhpb4#
注意事项
由于在输入的字符串中没有设置分隔符,我必须说,在某种程度上,您无法可靠地排除特定的单词。
例如,如果要排除
test
,则如果输入是protester
或rotatestreet
,则可能会产生问题。你没有一个词是什么的明确界限,因此导致你在你可能不想的时候排除test。另一方面,如果你只是想忽略字符串
test
,只要用一个空字符串替换test
就可以了。