전체 문자열과 일치


165

텍스트가 정확히 일치하는 경우에만 일치하는 정규식은 (중요한 경우 JavaScript) 무엇입니까? 즉, 문자열의 다른 끝에 추가 문자가 없어야합니다.

I가 일치하기 위해 노력하고있어 예를 들어, abc다음, 1abc1, 1abc,과 abc1일치하지 않습니다.


5
정규식을 처음 접하는 사람들에게는 원하는 것에 따라 두 가지 좋은 답변이 있습니다. 정말 원하는 아스 커 \babc\b예를 허용 것, 123 abc 123에 대한 일치하도록 abc(질문처럼하지만 부정적인 예); 그러나 문자열의 시작 부분 에 있고 끝에 ^abc$있는지 확인하십시오 . 그렇지 않으면 일치하지 않습니다. ac
앤드류

답변:


305

시작 및 끝 구분 기호를 사용하십시오. ^abc$


3
@Jake, howards 답변이 효과가 있었지만 abc 만 문자열의 유일한 항목 일 때만 작동한다는 점에 유의해야한다고 생각합니다. 예를 들어, '알파벳의 첫 세 글자 ABC 방송입니다'와 일치하지 않을
matchew

이것은 저에게 효과적이었습니다. 어쩌면 내 예제가 일치 대상으로 "abc def ghi"였을 것입니다.
Jake Pearson

@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
Wiktor Stribiżew

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 '와 일치 하지 않기를 원하며 여기에서 두 번째 해결책은 일반적인
정규 표현식

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.