Chrome에서는 작동하지만 Safari에서는 작동하지 않습니다.잘못된 정규식: 잘못된 그룹 지정자 이름 /(?<=\/)([^#]+)(?=#*)/
나의 자바스크립트 코드에서 이 regex는/(?<=\/)([^#]+)(?=#*)/
Chrome에서는 잘 작동하지만 사파리에서는 다음과 같은 결과를 얻을 수 있습니다.
잘못된 정규식: 잘못된 그룹 지정자 이름
무슨 생각 있어요?
Safari는 아직 사후 관리 기능을 지원하지 않는 것 같습니다(즉,(?<=\/)
한 가지 대안은 다음과 같습니다./
captured가 아닌 그룹에서 앞에 나온 다음 첫 번째 그룹만 추출합니다(다음의 내용)./
그리고 그 전에#
).
/(?:\/)([^#]+)(?=#*)/
또한.(?=#*)
이상합니다 - 앞을 보고 싶을 수도 있습니다(예:#
또는 문자열의 끝)이 아닌*
quantifier(0 이상 발생)#
) 같은 것을 사용하는 것이 더 나을 수도 있습니다.
/(?:\/)([^#]+)(?=#|$)/
아니면 앞을 내다보는 것을 완전히 생략합니다 (왜냐하면([^#]+)
욕심이 많습니다), 상황에 따라.
레젝스?<=
지원되지 않는 Safari iOS를 사용할 수 있습니다.?:
참고:/
또는 captured이 아닌 그룹에서 앞에 오는 첫번째 참고서.
자세한 내용 참조: https://caniuse.com/js-regexp-lookbehind
let str = "Get from Slash/to Next hashtag #GMK"
let workFineOnChromeOnly = str?.match(/(?<=\/)([^#]+)(?=#*)/g)
console.log("❌ Work Fine On Chrome Only", workFineOnChromeOnly )
let workFineSafariToo = str?.match(/(?:\/)([^#]+)(?=#*)/g)
console.log("✔️ Work Fine Safari too", workFineSafariToo )
RegExp에 대한 지원은 웹 키트에서 발표한 주장의 이면에 있습니다.
링크 확인 : https://github.com/WebKit/WebKit/pull/7109
이 문제를 우연히 발견하고 아무 것도 찾지 못하는 사람들을 위해 이 문제를 밖으로 내보내고 싶었을 뿐입니다.
저도 같은 문제가 있었는데 제 종속성 중 하나인 Discord.js에서 RegEx 표현으로 확인되었습니다.
다행히 나는 그 패키지가 더 이상 필요하지 않았지만 만약 그렇다면 문제를 넣거나 하는 것을 고려해보세요 (아마도 당신은 당신의 프론트엔드 반응 앱에서 discord.js를 실행하지 말아야 할 것입니다).
Safari는 16.4에서 지원 배경을 추가했습니다.
https://developer.apple.com/documentation/safari-release-notes/safari-16_4-release-notes#JavaScript
언급URL : https://stackoverflow.com/questions/51568821/works-in-chrome-but-breaks-in-safari-invalid-regular-expression-invalid-group
'programing' 카테고리의 다른 글
작동하지 않는 자바스크립트 규칙은 무엇입니까? (0) | 2023.10.03 |
---|---|
MySQL에서 그룹화된 순위를 수행하는 방법 (0) | 2023.10.03 |
Chrome의 파일 입력에서 "No file choosed" 툴팁을 제거하려면 어떻게 해야 합니까? (0) | 2023.10.03 |
PHP에서 .html 파일의 전체 내용을 에코하려면 어떻게 해야 합니까? (0) | 2023.10.03 |
jQuery .get error response function? (0) | 2023.10.03 |