2015-06-18 99 views
0

我有一个字符串和两个单词从字典中,我想知道是否在我的字符串中有不是我的字典单词的单词。JavaScript的正则表达式来查找字符串

var string = 'foobarfooba'; 

var patt = new RegExp("[^(foo|bar)]");// words from dictionary 
var res = patt.test(string); 


console.log(res);//return false 

它应该返回true,因为在我的字符串中也有'ba',但它返回false。

+1

失去了方括号。你不是在寻找[字符类](http://www.regular-expressions.info/charclass.html) – Phil

+0

'var patt =/foo | bar /;' – befzz

回答

1

Phil在你的问题发表了评论,你必须摆脱的字符类:

[^(foo|bar)] 
^-- here --^ 

字符类是用来匹配(或不如果您使用^匹配)特定的无序字符。

只需使用:

var patt = new RegExp("(?:foo|bar)");// words from dictionary 

如果你想确保所有字符串的正则表达式匹配,你可以使用:

^(?:foo|bar)+$ 

Working demo

如果你想捕捉无效的单词,你可以使用正则表达式来捕获这样的组:

^(?:foo|bar)+|(.+)$ 

Working demo

匹配信息

MATCH 1 
1. [9-11] `ba` 
+0

但是我需要知道是否有一些像'ba'这样的字符不同于我的字 –

+0

它仍然返回false –

+0

@Giuseppefederico没关系,它返回false,因为有些单词与您的正则表达式不匹配。这不是你想要的吗? –

相关问题