2011-10-28 4 views

답변

4

업데이트 : 의견에 제시된 제안에 따라 업데이트하십시오.

대신이 세 표현식 중 하나를 사용하십시오. 동일한 정규 표현식이며 (?i) 부분을 수정하고 Javascript 사양과 일치하도록 필수 이스케이프를 추가합니다. 당신이 당신의 정규식 개체를 구성하는 new RegExp를 사용하는 경우

var regex = new RegExp("^(?![\\. -])(?!.*[\\. -]$)[\\w!$%'*+/=?^`{|\\.}~ -]{1,64}$", "i"); 
var regex = new RegExp('^(?![\\. -])(?!.*[\\. -]$)[\\w!$%\'*+/=?^`{|\\.}~ -]{1,64}$', "i"); 
var regex = /^(?![\. -])(?!.*[\. -]$)[\w!$%'*+/=?^`{|\.}~ -]{1,64}$/i; 

, 당신은 모든 백 슬래시를 이스케이프해야합니다. 첫 번째와 두 번째 표현의 차이점은 두 번째 표현식이 작은 따옴표를 사용하여 정규 표현식 문자열을 구성하고 정규 표현식의 일부로 작은 따옴표가 있기 때문에 작은 따옴표를 이스케이프 처리하여 제대로 작동하게해야한다는 것입니다. 세 번째 식에서는 /pattern/flags 구문을 사용하여 정규식 개체를 만듭니다. 마이크가 의견에 지적한대로 /이 문자 집합 안에 없으면 탈출해야합니다. /은 모두 문자 집합 안에 있으므로 이스케이프가 필요하지 않습니다. 더 비 이스케이프 슬래시가 Darthg8r에 대한 문제가되지 않습니다 자바 스크립트 정규식 여기 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

+2

구문에 대한

체크 아웃 :'새 정규식 ('A/B') 같은이 '완벽하게 유효합니다. '/ a/b /'는 유효하지 않겠지 만 Darthg8r이 그 일을하는 경우 Darthg8r은 "invalid group"오류 메시지를받지 못할 것입니다. – ruakh

+0

하지만 코드가 작동하기 때문에 +1하십시오. :-) – ruakh

+0

물론입니다. 저는 OP가 그것을 알고 있는지 확인하기를 원합니다. 그가'new RegExp'를 사용한다면'\\'기호를 벗어나야 만합니다. 나는 OP가 그의 정규식을 사용하는 맥락에 대해 확신하지 못한다. –

3
(?i) 

자바 스크립트 정규식 내부 모드 수정을 지원하지 않습니다.

관련 문제