여러 번 문자열을 사용하고 있습니다 match
함수를 이 정규식과 일치하는지 알고 있습니다.
if(str.match(/{regex}/))
이것 사이에 차이점이 있습니까?
if (/{regex}/.test(str))
그들은 같은 결과를주는 것 같습니까?
답변
기본 사용법
먼저, 각 기능이 무엇을하는지 보자 :
의 RegexObject . 테스트 ( 문자열 )
정규식과 지정된 문자열이 일치하도록 검색을 실행합니다. true 또는 false를 반환 합니다 .
문자열 . 일치 ( RegExp )
문자열을 정규식과 일치시킬 때 일치 항목을 검색하는 데 사용됩니다. 일치하는 배열이 있거나
null
없는 배열을 반환합니다 .
이후 null
로 평가 false
,
if ( string.match(regex) ) {
// There was a match.
} else {
// No match.
}
공연
성능과 관련하여 차이가 있습니까?
예 . MDN 사이트 에서이 짧은 메모를 찾았습니다 .
문자열이 정규식 regexp와 일치하는지 알아야하는 경우 regexp.test (string)를 사용하십시오.
차이가 중요합니까?
한 번 더 대답은 예입니다 ! 이 jsPerf 는 브라우저에 따라 차이가 ~ 30 % ~ ~ 60 % 임을 보여줍니다 .
결론
.test
더 빠른 부울 검사를 원하면 사용 하십시오. 사용 .match
사용하는 경우 모든 일치를 검색하기 위해 g
글로벌 플래그를.
답변
정규 표현식에서 전역 플래그를 고려하는 것을 잊지 마십시오.
var reg = /abc/g;
!!'abcdefghi'.match(reg); // => true
!!'abcdefghi'.match(reg); // => true
reg.test('abcdefghi'); // => true
reg.test('abcdefghi'); // => false <=
이는 Regexp가 새 일치 항목이 발견 될 때 lastIndex를 추적하기 때문입니다.
답변
이것은 내 벤치 마크 결과입니다
4,267,740 ops / sec ± 1.32 % 테스트 (60 회 샘플링)
exec 3,649,719 ops / sec ± 2.51 % (60 회 샘플링)
3,623,125 ops / sec와 일치 ± 1.85 % (62 회 샘플링)
6,230,325 ops / sec의 ± 0.95 % (62 회 샘플링)
테스트 방법은 match 방법보다 빠르지 만 가장 빠른 방법은 indexOf입니다.