2012-02-04 6 views
9

^(circumflex) 및 $ (currency 또는 dollar) 문자가없는 예제가 대부분 일치하는 문자열의 시작 부분을 표시합니다. 그러나 html5 사양에서 이와 관련하여 아무 것도 발견하지 못했습니다. 그들은 그 패턴에 내재적입니까? html5 스펙은 암시 적임을 명시합니다.

문자열과 일치 할 때 컴파일 된 패턴 정규 표현식의 시작은 문자열의 시작에 고정되고 끝은 문자열의 끝에 고정되어야합니다. 이 속성에 사용 된 정규 표현식 언어는 JavaScript에서 사용 된 정규 표현식 언어와 동일하지만 패턴 속성이 전체 값과 일치한다는 점을 제외하고는 어떤 하위 집합 (^ (?: at 패턴의 시작과 끝에 $).

유형 = "텍스트"입력에서는 패턴이 두 형식 중 하나를 사용하여 정상적으로 작동하지만 형식 = "tel"입력에서는 정규 표현식이 예상대로 작동하도록 문자를 제거해야했습니다. 나는 Opera와 Firefox에서 모두 테스트를 마쳤습니다.

이 브라우저의 버그입니까? bugzilla 등에서 버그를 신고해야합니까?


편집 : 그것은 내가 감소 된 테스트 케이스를 작성할 수 없습니다이기 때문에 내가 이상한 버그 uppon 발견 한 것 같다. 페이지의 간단한 입력은 위에서 언급 한 동작을 보여주지 않습니다. 그러나 문제는 여전히 남아 있습니다. 해야합니까? 아니면^및 $ 앵커를 사용하지 않아야합니까?

+1

https://developer.mozilla.org/en/HTML/Forms_in_HTML에서는 'tel'입력에 대해 다음과 같이 언급합니다. * 전화 번호가 다양하기 때문에 줄 바꿈은 입력 값에서 자동으로 제거되지만 다른 구문은 적용되지 않습니다. 국제적으로 pattern 및 maxlength와 같은 속성을 사용하여 컨트롤에 입력 된 값을 제한 할 수 있습니다. *. 'pattern' 속성 설명에서'tel' 유형에 대해 특별한 언급은하지 않았습니다. –

+0

실제로 파이어 폭스로 확인해 보면'tel' 입력에 이상한 동작이 보이지 않습니다. 코드, 예상 한 것, 대신 얻은 것을 포함하여 전체 예제를 제공 할 수 있습니까? –

+0

그래, 방금 알아 차리고 질문에 편집을 추가했습니다. 내 양식은 여기에 게시하는 것이 조금 까다 롭지만 내가 할 수있는 것을 보게 될 것입니다. –

답변

2

물론 전화 번호는 다른 형태로 제공됩니다.

  • 오스트리아 비엔나에있는 동안 "4000"을 다이얼하면 시청 에 연결됩니다.
  • 오스트리아 인스부르크에있는 동안 비엔나 시청
  • 에 전화를 걸려면 "014000"을 누르고 미국 뉴욕에있는 경우 동일한 번호를 다이얼하려면 +4314000을 다이얼해야합니다.

이것은 오래된 기계 시스템이 한 자리에서 다음 자리로 전화를 연결하는 작업을 위임 할 때 역사적인 이유가 있습니다 (이것은 확장자가 숫자 끝에 오는 이유이기도합니다. 그것은 정확하게 주어진 경우 시작, 당신이 아니라 결국), 전면에 도메인 이름을 확장 할 수있는 DNS AOT

지금 두 앵커 ^$와 정규식 만 전화 번호를 일치합니다 같은 양식. $ 앵커 만 있으면 다른 확장자가없는 한 동일한 전화 번호와 일치하게됩니다. ^$을 떨어 뜨리고 없음 앵커, 즉 위치 코드와 확장의 독립과 일치하지 않습니다,하지만 신뢰성 소개합니다 :

"4000"를 일치 비엔나 시청의 패턴으로 "4000"사용 "014000"와 "+ 4314000 "이지만 독일 은행 인"+44140001 "과도 일치합니다.

+0

나는 조금 혼란스러워. 어쩌면 나는 내 질문에 예제를 게시 했어야했다. 예를 들어 "^ [\ d] {10} $"을 (를) 사용하면 전화 입력에서 1234567890과 일치하지 않지만해야합니까? –

+0

이 전화 번호는 어디에서 유래 되었습니까? 질문이 변경 되었습니까? – Borodin

+0

아니요, TEL 입력에 대해 구체적으로 말하면 –

2

표준에 따르면, the regex is anchored at the start and end. 그러나 실제로는 (FF 15 및 Chrome 21 테스트) 시작 부분에만 고정되어 있습니다!

그래서 표준과 현실 모두와 호환되도록하려면 정규 표현식에 $을 명시 적으로 고정해야합니다. ^을 사용할 지 여부는 귀하에게 달려 있습니다. 필요하지 않습니다.

+0

그래, 벌레를 신청하는 자원 봉사자? –