Tüm dizeyi eşleştir


165

Yalnızca metin tam eşleşiyorsa eşleşecek normal ifade (önemliyse JavaScript'te) nedir? Yani, dizenin diğer ucunda fazladan karakter olmamalıdır.

Ben maç için çalışıyorum Örneğin, abcdaha sonra, 1abc1, 1abc, ve abc1maç olmaz.


5
Regex için yeni olanlar için, aradığınıza bağlı olarak, buna iki iyi cevap var. Asker gerçekten ister \babc\b; bu da örneğin 123 abc 123eşleşmesine izin verir abc(ancak sorudaki gibi olumsuz örnekleri değil); ancak, dizenin başında ve sonunda ^abc$olduğundan emin olur - aksi takdirde eşleşmez. ac
Andrew

Yanıtlar:


305

Başlangıç ​​ve bitiş sınırlayıcılarını kullanın: ^abc$


3
@Jake, howards cevap çalıştı sevindim, ancak sadece abc dizede tek öğe olduğunda işe yarayacağını unutmayın. Örneğin, 'alfabedeki ilk 3 harf abc' ile
eşleşmez

Bu benim için çalıştı, belki benim örneğim maç hedefi olarak "abc def ghi" olmalıydı.
Jake Pearson

@ Dizeniz "abc def ghi" olsaydı / ^ abc $ / işe yaramazsa. ör .: jsfiddle.net/XUyAc
matchew

2
Anlıyorum, eğer "abc def ghi" ile eşleşmek istersem benim regex'im olurdu^abc def ghi$
Jake Pearson

2
Not: tüm dizeyle eşleşen alternatifleri olan bir desen yapmak için onu (yakalamayan) yakalama grubuyla sarmak gerekebilir: /^(?:abc|def)$/veya /^(abc|def)$/. Aksi takdirde, grup kullanılmazsa, dizenin başlangıcında VEYA dizenin sonunda /^abc|def$/eşleşir . abcdef
Wiktor Stribiżew

40

Değişir. Yapabilirdiniz

string.match(/^abc$/)

Ancak bu şu dizeyle eşleşmez: 'alfabenin ilk 3 harfi abc'dir. abc123 değil '

Bence \b(kelime sınırları) kullanmak isteyeceksiniz :

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

Canlı örnek: http://jsfiddle.net/uu5VJ/

Eski çözüm sizin için işe yararsa, bunu kullanmamanızı tavsiye ederim.

Bu, aşağıdaki gibi bir şeye sahip olabileceğiniz anlamına gelir:

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

Kullanabilirken

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

Çok daha fazla kaynak yoğun olacaktır. Benim için genel bir kural, basit bir dize karşılaştırması için koşullu bir ifade kullanmak, daha dinamik bir desen için normal bir ifade kullanmaktır.

JavaScript ifadeleri hakkında daha fazla bilgi: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions


12
@NiharSawant OP'nin sorduğu sorunun cevabı bu olmadığı için. OP açıkça vermez "alfabenin ilk 3 harf abc vardır '" eşleştirmek istiyor ve burada ikinci çözüm genel Regexes eşleşen işi yapmaz, örneğin / ^ [abc] + $ /
DJClayworth

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.