Qual é a expressão regular (em JavaScript, se for o caso) para corresponder apenas se o texto for uma correspondência exata? Ou seja, não deve haver caracteres extras no outro extremo da string.
Por exemplo, se eu estou tentando corresponder para abc
, em seguida 1abc1
, 1abc
e abc1
que não coincidem.
\babc\b
, o que permitiria, por exemplo,123 abc 123
corresponder aabc
(mas não os exemplos negativos, como na pergunta); no entanto,^abc$
garantirá quea
esteja no início da sequência ec
no final - caso contrário, não corresponderá.Respostas:
Use os delimitadores inicial e final:
^abc$
fonte
^abc def ghi$
/^(?:abc|def)$/
ou/^(abc|def)$/
. Caso contrário, se o grupo não for usado,/^abc|def$/
corresponderáabc
no início da string OUdef
no final da string.Depende. Você poderia
Mas isso não corresponderia à seguinte string: 'as 3 primeiras letras do alfabeto são abc. não abc123 '
Eu acho que você gostaria de usar
\b
(limites de palavras):Exemplo ao vivo: http://jsfiddle.net/uu5VJ/
Se a solução anterior funcionar para você, eu não recomendaria usá-la.
Isso significa que você pode ter algo como o seguinte:
Enquanto você poderia usar
Seria consideravelmente mais intensivo em recursos. Para mim, uma regra geral é que, para uma comparação simples de cadeias, use uma expressão condicional, para um padrão mais dinâmico, use uma expressão regular.
Mais sobre expressões regulares do JavaScript: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions
fonte
"^" Para o início da linha "$" para o final dela. Por exemplo.:
Corresponderia "abc", mas não "1abc" ou "abc1". Você pode saber mais em https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
fonte