RegEx用于删除在指定集合中包含字符*而不是*的单词

时间:2011-02-01 16:51:51

标签: javascript regex

我有一个字符串,让我们说:

' 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, ' '));

谢谢:)

3 个答案:

答案 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