Совпадение всей строки

Какое регулярное выражение (в JavaScript, если это имеет значение) соответствует только тому, соответствует ли текст точному совпадению? То есть на другом конце строки не должно быть никаких дополнительных символов.

Например, если я пытаюсь выполнить сопоставление для abc, то 1abc1, 1abc и abc1 не совпадают.

Ответ 1

Используйте разделители начала и конца: ^abc$

Ответ 2

По-разному. Вы могли бы

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