2017-10-16 7 views
-1

전화 번호에 대한 입력 필드가 3 가지입니다. 각 필드는 미국 전화 번호 형식 만 허용해야합니다. 예를 들면 다음과 같습니다.HTML5는 미국 전화 번호 만 허용합니까?

(564) 332-9088 //allowed format. 

사용자는 위의 예와 같은 형식으로 전화 번호를 입력 할 수 있어야합니다. 따라서 처음 세 자리는 중괄호 ()에 있어야하며 3 자리 숫자 다음에 공백 (무시할 수 있음)을 입력 한 다음 - 대시와 마지막 4 자리 숫자를 입력하십시오. 패턴 정규식을 만들었지 만 ()이 필요하지 않습니다. 사용자는 허용되지 말아야하는 336-678-8999 형식의 전화 번호를 입력 할 수 있습니다.

사람이 당신이이 문제를 접근하는 더 좋은 방법이 있으면 알려이나 주시기 바랍니다에만 (xxx) xxx-xxxx을 받아 내 코드를 조정할 수있는 방법을 알고있는 경우

<form name="testFrm" id="testFrm" method="POST" action="#"> 
 
    <label for="wphone">Work Phone:</label> 
 
    <input type="tel" name="phoneW" id="phoneW" pattern="(?:\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4}" maxlength="14" title="US based Phone Number in the format of: (123) 456-7890" placeholder="(xxx) xxx-xxxx" required /> 
 
    <span><input type="submit" name="frmSubmit" id="frmSubmit" value="Submit" /></span> 
 
</form>
. 고맙습니다.

답변

1

나는 이것이 (xxx) xxx-xxxx 형식 만 허용한다고 생각합니다. 여기 공간는 선택적이다 (xxx)

\(\d{3}\)[ ]?\d{3}[-]?\d{4} 

설명 이후

\( -> [0-9와 동일한 숫자 (일치 - 1>은

\d)을 (그대로 (대소 문자 구분 문자와 일치 ])

{3} -> 수량 한정자 - 정확히 3 번 일치

\)은 -> 경기 ->

\d) (욕심 필요에 따라 환원, 0과 1 시간 사이의 공간, 가능한 한 많은 시간을 일치 ->)는 민감한 그대로 (경우)

[ ]?를 문자와 일치 > 한정 기호 - -

{3} ([0-9]과 동일) 숫자가> 가능한 0과 1 회만큼 사이 대시 일치 - 정확히 3 회

[-]? 매치 > 한정 기호 - ->

{4} ([0-9]로 같음) 숫자와 일치 -이

\d은 (욕심) 필요에 따라 환원 경기 수 정확히 4 배

참조 데모 : https://regex101.com/r/Ws3c1t/1