문제

후속 조치를 위해 미국 전화번호를 입력해야 하는 웹사이트 양식이 있는데 이 경우에는 이것이 매우 필요합니다.정크 데이터를 입력하는 사용자를 제거하고 싶습니다. 330-000-0000.전화번호를 확인하는 제3자의 몇 가지 옵션을 본 적이 있지만 이것이 이 상황에 가장 적합한 옵션인지는 모르겠습니다.그러나 이러한 제3자 중 하나를 모두 사용해 본 적이 있고 여기에서도 크게 감사할 만한 추천을 할 수 있다면.

그러나 수신된 정크 전화번호의 범위를 좁히기 위해 일련의 규칙에 따라 번호를 확인하는 것을 고려하고 있습니다.

  • 555 번호가 아닙니다
  • 동일한 숫자 7개가 포함되어 있지 않습니다.
  • 유효한 지역 코드(쉽게 사용 가능)
  • 123-1234 또는 123-4567이 아닙니다.
  • 867-5309도 셀 수 있을 것 같아요(ㅎ)*)

이로 인해 사용자가 자신의 전화번호를 입력할 수 없는 상황이 발생합니까?전화번호에 포함해서는 안 되는 다른 규칙이 있나요?다른 생각은 없나요?

도움이 되었습니까?

해결책

당신이 보증하는 것보다 더 많은 노력을 기울이고있는 것 같습니다. 고려하다:

당신의 목적이 잘못 입력 된 전화 번호를 막기위한 경우, 아주 간단한 수표로 90% 이상을 잡을 수 있습니다.

귀하의 목적이 사용자가 해당 정보를 제공할지 여부에 관계없이 유효한 숫자를 강제로 제공하려는 경우, 100% 정확하고 최신-에 액세스 할 수 있더라도 희망없는 작업을 수행했습니다. 입력 한 정확한 숫자가 현재 살아 있음을 확인하기위한 초 통신 데이터베이스는 여전히 자신의 숫자가 자신의 숫자라는 확신을 얻지 못합니다. 다시 한번, 간단한 수표는 대부분의 사람들이 가짜 번호에 들어가는 사람들을 모아야하지만, 2 ~ 3 번 이상 시도하려는 사람들은 ~ 할 것이다 숫자를 얻기위한 시도를 물리 칠 수있는 방법을 찾으십시오.

어느 쪽이든, 간단한 테스트는 좋은 결과를 얻을 수 있으며, 더 복잡한 규칙 세트에 들어가면 점점 더 많은 시간이 걸리는 동시에 점점 더 많은 시간이 걸릴 것입니다. 동일한 숫자 "및 867-5309 케이스).

다른 팁

정규 표현식을 사용하여 앱에서 내부적으로 전화 번호 검증을 할 수 있습니다. 언어에 따라 제공된 전화 번호가 표현식과 일치하는 경우 True를 반환하는 함수를 호출 할 수 있습니다.

PHP에서 :

function phone_number_is_valid($phone) {
    return (eregi('^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$', $phone));
}

온라인으로 다른 정규 표현식을 찾을 수 있습니다. 나는 위에서 하나를 찾았다 http://regexlib.com/displaypatterns.aspx?categoryid=7&cattabindex=2

편집 : 정규 표현식의 일부 언어 별 사이트 :

영역 코드를 확인할 수 있다면 정말, 정말 당신이 아마도 합리적인만큼하고있는 전화 번호를 알아야합니다.

Amybe에 대한 답변을 살펴 봅니다 이 질문.

867-5309는 다른 지역 코드의 사람들에게 할당 된 유효한 전화 번호입니다.

Django에는 LocalFlavor라는 멋진 작은 기여 패키지가 있습니다. Django가 사용하려는 국가를 위해 Django가 어떻게 처리하는지 볼 수 있습니다. 예를 들어: 미국 양식 검증. 이것은 당신이 거의 알지 못하는 국가에 대한 정보에 대한 훌륭한 의지가 될 수 있습니다.

귀하의 고객은 제가 하는 일, 즉 지역 영화 전화 번호를 알려주는 일을 계속할 수 있습니다.

또한 123-1234 또는 123-4567은 접두사가 1로 시작하므로 유효하지 않은 숫자일 뿐이지만 234-5678 또는 234-1234는 실제로 유효합니다(가짜처럼 보이지만).

US- 및 Canada-Format 번호 만 고수하고 있다면 다음과 같은 성과가 효과가 있다고 생각합니다. [2-9] [0-9] [0-9]-[2-9] [0-9] [0-9]. 0-9]-[0-9] [0-9] [0-9] [0-9] &! [2-9] [0-9] [0-9] -555- [0-9] [0-9] [0-9] [0-9

또한 현재 일부 영역에서 사용되는 10 자리 다이얼링을 고려해야합니다. 이는 장거리 다이얼링과 다릅니다 (예 : 1-303-555-1234와 달리 303-555-1234). 어떤 곳에서는 유효한 전화 번호의 길이가 10 자리입니다. 다른 경우, 그것은 일곱입니다.

이러한 매개 변수는 나에게 꽤 좋아 보인다. 나는 또한 911로 시작하는 숫자를 피할 수있다.

내 연구에서 내가 미리 수행해야했던 연구에서>. <나는 7 개의 동일한 숫자가 유효한 전화 번호라는 것을 발견했다. 그래서 나는 그 규칙을 계산할 수 있습니다.

이것은 내가 사용하는 빠른 기능입니다 (아래). 매월 업데이트되는 AreaCode 및 Prefix 데이터가 포함 된 ZipCode 데이터베이스에 액세스 할 수 있습니다. 영역 코드에 접두사가 존재하는지 확인하기 위해 데이터 딥을 수행하는 것에 대해 종종 생각했습니다.

    public static bool isPhone(string phoneNum)
    {
        Regex rxPhone1, rxPhone2;

        rxPhone1 = new Regex(@"^\d{10,}$");
        rxPhone2 = new Regex(@"(\d)\1\1\1\1\1\1\1\1\1");

        if(phoneNum.Trim() == string.Empty)
            return false;

        if(phoneNum.Length != 10)
            return false;

        //Check to make sure the phone number has at least 10 digits
        if (!rxPhone1.IsMatch(phoneNum))
            return false;

        //Check for repeating characters (ex. 9999999999)
        if (rxPhone2.IsMatch(phoneNum))
            return false;

        //Make sure first digit is not 1 or zero
        if(phoneNum.Substring(0,1) == "1" || phoneNum.Substring(0,1) == "0")
            return false;

        return true;

    }

나는 이것이 올바른 장소라면, 그것은 검증 함수가 아닌 서식 함수라면, 나는 그것을 커뮤니티와 공유하겠습니다. 어쩌면 언젠가는 도움이 될 것입니다 ..

Private Sub OnNumberChanged()
    Dim sep = "-"
    Dim num As String = Number.ToCharArray.Where(Function(c) Char.IsDigit(c)) _
                                                 .ToArray
    Dim ext As String = Nothing
    If num.Length > 10 Then ext = num.Substring(10)
    ext = If(IsNullOrEmpty(ext), "", " x" & ext)
    _Number = Left(num, 3) & sep & Mid(num, 4, 3) & sep & Mid(num, 7, 4) & ext
End Sub

내 검증 기능은 다음과 같습니다.

Public Shared Function ValidatePhoneNumber(ByVal number As String)
    Return number IsNot Nothing AndAlso number.ToCharArray. _
                                  Where(Function(c) Char.IsNumber(c)).Count >= 10
End Function

나는이 마지막 함수를 엔티티의 OnNumberChanging (숫자로) 메소드라고 부릅니다.

우리와 국제 전화 검증을 위해이 코드가 가장 적합하다는 것을 알았습니다.

((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$

당신은 (다소 날짜가 있지만) 토론을 찾을 수 있습니다. 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top