2010-05-20 9 views
4

유효성 검사 라이브러리와 함께 제공되는 이전 정품 인증 코드와 this 정규식 유효성 검사를 바꾼 이유는 사전 빌드 된 자바 스크립트 유효성 검사 라이브러리를 사용하고 있기 때문에 미국 휴대 전화 번호를 확인하려고하기 때문입니다.정규식 | 유효성 검사 오류

이전 유효성 검사 정규식 :

"telephone":{ 
"regex":"/^[0-9\-\(\)\ ]{10,10}$/", 
"alertText":"* Invalid phone number"}, 

2126661234처럼 작동하지만 미국 표준이다.

"telephone":{ 
"regex":"/^[2-9]\d{2}-\d{3}-\d{4}$/", 
"alertText":"* Invalid phone number"}, 

가 지금은 오류가 모든 항목은 내가 212-666-1234 내가 정말 잘못이 무엇인지 모른다 입력 한 경우에도, 그래서 도움을 기대 해요 :

나는 변경 후.

+1

regexlib를 사용하는 경우 +1입니다. 이전 버전에 문자열에 슬래시가 있었습니까? '/.../ "' – Kobi

+0

예 슬래시가 있습니다. – Switch

답변

4

당신은 백 슬래시

"telephone":{ 
"regex":"/^[2-9]\\d{2}-\\d{3}-\\d{4}$/", 
"alertText":"* Invalid phone number"}, 

var r = /^[2-9]\d{2}-\d{3}-\d{4}$/; 

당신이 정규식을 초기화 문자열을 사용하여, 당신은 백 슬래시를 탈출해야뿐만에만 정규식 리터럴에서

/^[2-9]\d{2}-\d{3}-\d{4}$/ 작품을 탈출 할 필요가

var r = new RegExp("^[2-9]\\d{2}-\\d{3}-\\d{4}$"); 
+0

또한 원래 *가 작동하는 것처럼 보이는 이유를 설명합니다. 그것은 [0-9-()]'처럼 보입니다 - JavaScript 문자열은 이스케이프 된 문자를 잘못 무시하는 경향이 있으며'- '는'[a-z-]'와 같이 범위 다음에 문자 그대로 나타납니다. – Kobi

+0

고마워요 .. – Switch

0

\-과 같이 원래 정규식이 - 부호를 이스케이프 처리하는 것처럼 보입니다.

두 번째 예에서는 그렇게하지 않습니다.

+0

문자 클래스 안에 있었는데,'-'는 범위를 의미합니다 :'[a-z]'와'\ d- \ d'. 정규식은 괜찮아 보인다. – Kobi

+0

그러면 문제는 무엇입니까? – Switch

+0

@ Kobi, MMRUser : 예제 1의 _second_ dash는 범위 a-z와 관련이없는 백 슬래시로 이스케이프됩니다. 그래서, 당신의 정규식은 다음과 같이 보일 것입니다 :/^ [2-9] \ d {2} \ - \ d {3} \ - \ d {4} $/ –