我有一个字符串,让我们说:
' abc a b c ab ac ae '
我有一组我喜欢的角色,比如说:
['a', 'b', 'c']
我正在尝试删除包含 not 字符集的任何字词。我正在使用JS,但是正则表达式是一个正则表达式,因此任何与语言无关的帮助都会有很多帮助。
我试过这样的事情,但它没有做我希望的伏都教:
var str = ' abc a b c ab ac ae ';
var regex = new RegExp(' [a|b|c].[^a|b|c]+[a|b|c]. ', 'gi');
console.log(str.replace(regex, ' '));
谢谢:)
答案 0 :(得分:4)
^
是非字符,因此[^abc]
表示字符不能是a,b或c。试试这个与ae
[abc][^abc]+
编辑:修改正则表达式以忽略空格
[a-c][^a-c\s]+
答案 1 :(得分:0)
这样的事情应该这样做:
\s[abc]*[^abc\s]+[abc]*\s
这将包括任意一侧的空格,您的代码就是您想要的空间。
答案 2 :(得分:0)
对我而言,[^abc]
是一个代表所有事物(你不想要的东西)的百分比的类,而实际上,太过宽泛的画笔是唯一的积极要求。它需要一个平衡重量,以减少这一点。在像角色类这样的消极情绪中,剃须不能很好地完成。它已被修改为包含\ s。
最好只查找除了这些内容之外的单词,然后将它们排除在匹配之外。
/(?!\b[abc]+\b)\b\w+\b/
展开:
/ # Rx delim
(?! \b[abc]+\b ) # Not \b [abc]+ \b in front of us
\b \w+ \b # Match this word, it needs to go
/x # Rx delim, Xpanded modifier but not in JavaScript