web-dev-qa-db-ja.com

単語に一致しないJavaScript正規表現

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

たとえば、abcまたはdefのいずれかを含む文字列が渡されたときにfalseを返す関数が必要です。

'abcd'-> false

'cdef'-> false

'bcd'-> true

編集

できれば、[^ abc]のような単純な正規表現が必要ですが、連続した文字が必要なため、期待どおりの結果が得られません。

例えば。 myregexが欲しい

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

ステートメントmyregex.test('bcd')trueに評価されます。

80
bxx

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

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

説明はここにあります: 単語を含まない行に一致する正規表現?

105
ssgao
if (!s.match(/abc|def/g)) {
    alert("match");
}
else {
    alert("no match");
}
17
Petar Ivanov

クリーンなソリューションは次のとおりです。

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

これは2つの方法で実行できます。

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


if (/abc|def/.test(str)) {
                        ....
                    } 
0
Girish Gupta
function doesNotContainAbcOrDef(x) {
    return (x.match('abc') || x.match('def')) === null;
}
0
Bemmu