2011-06-23 22 views
46

javascriptの正規表現を使用して特定の単語と一致しない文字列をチェックするにはどうすればよいですか?javascript正規表現と単語が一致しない

たとえば、abcまたはdefのいずれかを含む文字列が渡された場合、falseを返します。

'ABCD' - >偽

'CDEF' - >偽

は 'BCD' - >真

EDIT好ましく

、私は簡単なような正規表現をしたいです[^ abc]のようなものですが、連続した文字が必要なので、期待通りの結果を出すことはできません。

例えば、私は声明myregex.test('bcd')trueに評価されmyregex

if (myregex.test('bcd')) alert('the string does not contain abc or def');

たい。

答えて

60

これは、あなたが探しているものです。

^((?!(abc|def)).)*$ 

説明はここにある: Regular expression to match a line that doesn't contain a word?

+3

申し訳ありませんが、重複しているのはどちらですか? – ssgao

+1

同じサイト([so])の別の質問に別の回答をミラーリングしている回答を投稿しないでください – Alexander

+2

ありがとうございます。しかし、OPとは全く同じではないと思います。 *言葉と別の質問への答えは* one * wordについてですが、私はそれを管理者にとにかく指示しました。 – ssgao

1
function test(string) { 
    return ! string.match(/abc|def/); 
} 
+1

'string.match(/ ABCは| DEF /)' ...確かにここにおそらく感謝 – SpliFF

+0

、より効率的です。 – Flimzy

+0

または.. 'return!string.match(...' – Kayla

12
if (!s.match(/abc|def/g)) { 
    alert("match"); 
} 
else { 
    alert("no match"); 
} 
+1

なぜあなたはあなたの正規表現でキャプチャしていますか? – Flimzy

+0

良い点!私は私がそれがab(c | d)efを意味するかもしれないキャプチャしないと思った。 –

0
function doesNotContainAbcOrDef(x) { 
    return (x.match('abc') || x.match('def')) === null; 
} 
3

ここでクリーンなソリューションです:

function test(str){ 
    //Note: should be /(abc)|(def)/i if you want it case insensitive 
    var pattern = /(abc)|(def)/; 
    return !str.match(pattern); 
} 
0

これは、2通りの方法で行うことができます。

if (str.match(/abc|def/)) { 
         ... 
        } 


if (/abc|def/.test(str)) { 
         .... 
        } 
関連する問題