"문자 클래스 오류 빈 범위"정규 표현식 내가 URL의 패턴과 일치하는 것입니다 내 코드에서 정규식을 얻고 오류가 발생했습니다
/^(http|https):\/\/([\w-]+\.)+[\w-]+([\w- .\/?%&=]*)?$/
이 오류는 "문자 클래스 오류 빈 범위"이었다 . 그 원인은 ([\w- .\/?%&=]*)?
부분에있는 것으로 나타났습니다. 루비는 -
대신에 범위의 연산자로 에 -
을 인식하는 것으로 보입니다. 돌진에 탈출구를 추가 한 후 문제가 해결되었습니다.
그러나 원본 정규 표현식은 동료의 컴퓨터에서 잘 실행되었습니다. 우리는 osx, 레일 및 루비의 동일한 버전을 사용합니다 : 루비 버전은 루비 1.9.3p194, 레일은 3.1.6, osx는 10.7.5입니다. 그리고 Heroku 서버에 코드를 배포 한 후에도 모든 것이 잘 작동했습니다. 왜 내 환경에서만이 정규식에 관한 오류가 있었습니까? Ruby 정규식 해석의 메커니즘은 무엇입니까?
는 잘 모르겠지만, 문자 클래스에 하이픈해야 항상 이스케이프 또는 문자 클래스의 시작 또는 끝에 있어야합니다. 그렇지 않으면 엔진이 범위를 만들기로 결정할 수 있습니다. 하이픈은 다른 범위 (예 :'[A-Z -_]') 바로 뒤에 허용되지만 이는 너무 낙담합니다. –
Ruby의 어떤 버전입니까? 정규식 지원이 포함 된 이전 버전입니까? 최소한 버전 관리, OS 등 관련 세부 사항을 제공하지 않으면 도움이되지 않습니다. –
도움을 주셔서 감사합니다. Dave에게 : 루비 버전은 루비 1.9.3p194, 레일은 3.1.6, osx는 10.7.5입니다. 내 루비가 다른 선택적인 정규 표현식 지원을 제공하는지 잘 모르겠다. 생각 좀 나누어 주시겠습니까? – Steve