2012-10-02 4 views
0

문자가 포함 된 항목 (기본적으로 a-z 또는 A-Z)을 제외하는 간단한 양식 유효성 검사를 작성합니다.자바 스크립트 전화 번호 유효성 검사 (알파벳 문자로 입력 거부)

이것은 현재 사용하고 있지만 내 스크립트는 0-9 이외의 모든 것을 거부합니다. 유효성 검사를 원하는 기간, 대괄호 및 대시는 거부됩니다.

var numericReg = /^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/; 
    if(number != "" && !numericReg.test(number)) { 
    return false; 

어떻게 문자 만 검사 할 수 있습니까?

숫자 만 0-9, 다음과 같은 문자가 입력을 수용하는 것이 작업을 수행하는 또 다른 방법 : ".", "-"에 대한, "(", ")"

+0

누군가가 값을 입력했는지만으로 문제가 발생 했습니까? 뭐예요 누군가가 "셀 : # 555-555 (5005)"로 입력하지 않을 것이라고 말합니다 – Steven

+0

우연히 이메일 주소를 누군가 입력하면 어떻게 될까요? 그러면 내 데이터 구조가 모두 엉망이 될 것입니다 !! –

+0

"1-800-MATTRES"는 어떻습니까? 그게 유효한 전화 번호 야, 안 그래? :-D –

답변

5

두 정규 표현식 너 시도해. 첫 번째 문자는 지정한 문자 만 포함하는 문자열을 찾습니다. ! 두 번째는 AZ az 또는 어떤 문자를 포함하지 문자열 일치 :

var isPhoneChar = /^[-.() \d]+$/; 
var isNonAlpha = /^[^a-z]+$/i; 

isNonAlpha이 ñüṃȅɍǒǘṩ ȯẗḥḛṝ ḽëʈťĕřś으로부터 보호되지 않습니다 점에 유의을

당신은 국제의 전화 확장을위한 x+을 허용도 고려할 수 있습니다

국번.

1

숫자를 직접 끌어 내기 위해 언제든지 사용할 수 있습니다.

는 커피 스크립트 :

console.log number.match /// 

    # Match the start of the string. 
^

    # Get the first 3 digits. 
    \(?(?=\d{3})(\d{3})[).\-\s]* 

    # Get the next 3 digits. 
    (\d{3})[.\-\s]* 

    # Get the last 4 digits 
    (\d{4}) 

    # End of the number 
    $ 

/// 

자바 스크립트 (또는 노드) : 여기

console.log(number.match(/^\(?(?=\d{3})(\d{3})[).\-\s]*(\d{3})[.\-\s]*(\d{4})$/)); 

만들기 위해 내가 커피 스크립트에 실행 된 테스트 케이스를 있는지 그것은 일 :

exports '1234567890' 
exports '123 456 7890' 

exports '123.456.7890' 
exports '123 456.7890' 
exports '123.456 7890' 
exports '123456.7890' 
exports '123.4567890' 
exports '123456. 7890' 

exports '123-456-7890' 
exports '123 456-7890' 
exports '123-456 7890' 
exports '123456-7890' 
exports '123-4567890' 

exports '(123)456-7890' 
exports '(123)4567890' 
exports '(123) 4567890' 
exports '(123)456 7890' 
exports '(123) 456 7890' 
exports '(123) 4567890' 

그리고 그들의 출력 :

1234567890 
[ '1234567890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '1234567890' ] 
123 456 7890 
[ '123 456 7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123 456 7890' ] 
123.456.7890 
[ '123.456.7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123.456.7890' ] 
123 456.7890 
[ '123 456.7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123 456.7890' ] 
123.456 7890 
[ '123.456 7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123.456 7890' ] 
123456.7890 
[ '123456.7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123456.7890' ] 
123.4567890 
[ '123.4567890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123.4567890' ] 
123456. 7890 
[ '123456. 7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123456. 7890' ] 
123-456-7890 
[ '123-456-7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123-456-7890' ] 
123 456-7890 
[ '123 456-7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123 456-7890' ] 
123-456 7890 
[ '123-456 7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123-456 7890' ] 
123456-7890 
[ '123456-7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123456-7890' ] 
123-4567890 
[ '123-4567890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '123-4567890' ] 
(123)456-7890 
[ '(123)456-7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '(123)456-7890' ] 
(123)4567890 
[ '(123)4567890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '(123)4567890' ] 
(123) 4567890 
[ '(123) 4567890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '(123) 4567890' ] 
(123)456 7890 
[ '(123)456 7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '(123)456 7890' ] 
(123) 456 7890 
[ '(123) 456 7890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '(123) 456 7890' ] 
(123) 4567890 
[ '(123) 4567890', 
    '123', 
    '456', 
    '7890', 
    index: 0, 
    input: '(123) 4567890' ] 

number.match이 해당 코드로 null을 반환하면 올바른 숫자가 아닙니다. 따라서 쉽게 확인할 수 있습니다. 그런 다음 이미 번호가 파싱되어 있습니다.

a-z을 허용하려면 \d 항목을 모두 [\d\w]으로 변경하십시오. (See this)

관련 문제