文字列全体に一致


165

テキストが完全に一致する場合にのみ一致する正規表現(重要な場合はJavaScript)とは何ですか?つまり、文字列の他の端に余分な文字があってはなりません。

例えば、私は一致しようとしている場合はabc、その後、1abc11abc、とabc1は一致しません。


5
正規表現の初心者には、探しているものに応じて、これに対する2つの良い答えがあります。質問者\babc\bは本当にを望んでいます。これにより、たとえば123 abc 123、一致することができますabc(ただし、質問のような否定的な例は許可されません)。ただし、^abc$それaが文字列の先頭とc末尾にあることを確認します。それ以外の場合は一致しません。
Andrew

回答:


305

開始と終了の区切り文字を使用します。 ^abc$


3
@Jake、私はhwardsの回答が機能してうれしいですが、abcだけが文字列内の唯一の項目である場合にのみ機能することに注意する必要があると思います。たとえば、「アルファベットの最初の3文字はabcです」とは一致しません
matchew

これは私にとってはうまくいきました。多分私の例は、マッチターゲットとして「abc def ghi」であったはずです。
ジェイクピアソン

@Jakeは、文字列が「abc def ghi」の場合、/ ^ abc $ /は機能しません。例:jsfiddle.net/XUyAc
matchew

2
「abc def ghi」と一致させたい場合、正規表現は次のようになります^abc def ghi$
Jake Pearson

2
注:代替パターンを文字列全体と一致させるには、(非)キャプチャグループでラップする必要がある場合があります:/^(?:abc|def)$/または/^(abc|def)$/。それ以外の場合、グループが使用されていなければ、文字列の最初または最後で/^abc|def$/一致abcdefます。
WiktorStribiżew2017

40

場合によります。あなたは出来る

string.match(/^abc$/)

しかし、それは次の文字列とは一致しません。 'アルファベットの最初の3文字はabcです。abc123ではない

私はあなたが使いたいと思います\b(単語の境界):

var str = 'the first 3 letters of the alphabet are abc. not abc123';
var pat = /\b(abc)\b/g;
console.log(str.match(pat));

ライブの例:http : //jsfiddle.net/uu5VJ/

前者の解決策があなたのために働くなら、私はそれを使うことを勧めません。

つまり、次のようなものがある可能性があります。

var strs = ['abc', 'abc1', 'abc2']
for (var i = 0; i < strs.length; i++) {
    if (strs[i] == 'abc') {
        //do something 
    }
    else {
        //do something else
    }
}

あなたが使うことができる間

if (str[i].match(/^abc$/g)) {
    //do something 
}

これはかなりリソースを大量に消費します。私にとって、一般的な経験則は、単純な文字列比較には条件式を使用し、より動的なパターンには正規表現を使用することです。

JavaScript正規表現の詳細:https : //developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions


12
@NiharSawantこれは、OPが尋ねた質問に対する答えではないためです。OPは明らかに「「アルファベットの最初の3文字はabc」である」と一致さたくありません。ここでの2番目の解決策は、一般的な正規表現の一致では機能しません。たとえば、/ ^ [abc] + $ /
DJClayworth

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.