나는 큰 자바 스크립트 배열, 5000 정도의 항목이 있습니다. 합리적으로 실행 가능한 방식으로 모든 배열 항목에 대해 RegExp 일치를 실행하려면 exec를 반복하고 그룹을 꺼내지 않는 것이 좋습니다. 나는 exec보다 훨씬 빨리 그룹화하지 않고서도 일치를 발견했다.자바 스크립트 정규식, 그룹 또는 긍정적 인 lookbehind없이 일치
- http://jsperf.com/regexp-exec-vs-match-vs-test/4 (속도 테스트) 자바 스크립트 감안할 때
이 더 긍정적 인 lookbehind 작업이없는 것이 표준 정규식 툴킷을 사용하여 오탐 (false positive)을 타격하지 않고 다음 값과 일치하는 번호 만 취할 수 있습니까?
// the value to be matched
var reference_field = ',1,3,8,123,';
// a series of reference id to match
var re = /(?:3|8)(?=,)/g;
reference_field.match(re);
// result, note that the second three was not intended --> ["3", "8", "3"]
배열이 너무 길지 않은 경우 번호를 그룹화하면됩니다. 예 :
// the value to be matched
var reference_field = ',1,3,8,123,';
// a series of reference id to match
var re = /,(3|8)(?=,)/g;
var match;
while(match = re.exec(reference_field)){
if (match == null) {break;}
// do something with match[1]
}
...하지만 그 의미는 모바일이 대상 플랫폼이기 때문에 속도에 민감합니다. 나는 정규식 속임수를 놓치고 있느냐, 아니면 그룹화하지 않고는 불가능한가? 모든 자바 스크립트 긍정적 인 lookbehind 대안 (쉼표에 부정적인 lookahead) 또는 추가 처리 오버 헤드를 소개 작동하지 않습니다.
실제로! 감사. – pragmar