이 JavaScript Regex가 작동하지 않는 이유
제공된 JavaScript 코드에서 regex var reg = new RegExp("/(s *([0-9.-] )s*,s([0-9.-] )s*)/g"); 입력 문자열 varpolygons="(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)";와 일치하지 않아 null이 발생합니다. 결과.
잘못된 정규식 사용
오류는 RegExp 생성자의 두 가지 잘못된 사용으로 인해 발생합니다.
정규식 리터럴
이러한 함정을 피하려면 슬래시로 묶고 이스케이프 처리된 정규식 리터럴을 사용하는 것이 좋습니다. 정규식 구문에 따라:
var reg = /\(\s*([0-9.-]+)\s*,\s([0-9.-]+)\s*\)/g;
출력 추출
코드에 사용된 Polygons.match(reg) 구문은 일치하는 하위 문자열의 배열을 반환합니다. 그러나 입력 문자열에는 패턴과 일치하는 단일 하위 문자열만 포함되어 있으므로 결과는 단일 요소 배열입니다.
["(25.774252, -80.190262),(18.466465, -66.118292),(32.321384, -64.75737),(25.774252, -80.190262)"]
개별 위도/경도 쌍을 배열로 추출하려면 match() 메서드를 사용하세요. exec()로 바꿔야 합니다.
[total match result, lat1, lon1, lat2, lon2, ..., latn, lonn] = reg.exec(polygons);
이렇게 하면 전체 일치 항목과 캡처된 모든 그룹이 포함된 배열이 생성되어 위도/경도에 쉽게 액세스할 수 있습니다. 쌍.
위 내용은 내 JavaScript 정규식 일치 좌표가 올바르지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!