정규식을 사용하여 전화 번호를 확인하는 방법


920

전화 번호를 확인하기 위해 포괄적 인 정규식을 작성하려고합니다. 이상적으로는 국제 형식을 처리하지만 다음을 포함하여 미국 형식을 처리해야합니다.

  • 1-234-567-8901
  • 1-234-567-8901 x1234
  • 1-234-567-8901 ext1234
  • 1 (234) 567-8901
  • 1.234.567.8901
  • 1/234/567/8901
  • 12345678901

나는 현재의 시도로 대답 할 것이지만, 누군가가 더 좋고 우아한 것을 기대하고 있습니다.


3
BTW, 사용중인 언어를 지정해야합니다. 모든 정규식 엔진이 동일한 구문을 갖는 것은 아닙니다.
AndrewJFord

9
답변 에이 경우가 있지만 1 대신에 +1 옵션을 생략 한 것 같습니다.
Eric

153
모든 미국 전화 번호 555와 별도로 전화 번호를 요구하지는 911않습니까?
앤드류 그림

41
반대로 555 접두사는 가짜 전화 번호 용으로 예약되어 있습니다. 이 번호는 실제 전화 번호에 연결되지 않기 때문에 시청자가 전화를 걸지 않고 무고한 사람을 괴롭히지 않도록 텔레비전과 영화에서 자주 사용됩니다.
rushinge

49
@rushinge 수십 년 전에는 사실 이었지만 더 이상 사실이 아닙니다 . 555 접두사는 여전히 특별하지만 555-0100에서 555-0199로 연결하지 않으면 소수의 숫자 만 종료되도록 보장됩니다. 하지만 난 앤드류가 어쨌든 농담을했다고 확신합니다.
Adam Davis

답변:


515

더 나은 옵션 ... 입력 할 때 숫자가 아닌 문자를 모두 제거하고 ( 'x'및 선행 '+'부호 제외) +44 (0) ...국제 접두어를 사용하라는 요청 에 따라 영국이 비표준 형식으로 숫자를 쓰는 경향 이 있으므로주의하십시오. (특정한 경우에는 (0)완전히 폐기해야합니다 ).

그런 다음 다음과 같은 값으로 끝납니다.

 12345678901
 12345678901x1234
 345678901x1234
 12344678901
 12345678901
 12345678901
 12345678901
 +4112345678
 +441234567890

그런 다음 표시 할 때 하트 컨텐츠로 다시 포맷하십시오. 예 :

  1 (234) 567-8901
  1 (234) 567-8901 x1234

35
숫자가 미국 외부에서 오는 것이 허용되면 서식 코드는 시간 낭비입니다.
Daniel Earwicker

26
이것은 훌륭하지만 모두 입력 된 내용이 실제로 전화 번호인지 확인하지는 않습니다. 예를 들어, 사용자가 필수 10 자리를 입력하지 않으면 어떻게됩니까? 이것은 좋은 정규식 검증과 결합되어야합니다.
Hugh Jeffner

108
질문이 유효성 검사에 관한 것이라는 것을 고려하면 이것은 정말 나쁜 대답입니다.
PlexQ

15
@PlexQ 동의하지 않습니다. 원래 문제는 가능한 모든 형식 옵션을 처리하려고했기 때문에 전화 번호 유효성 검사를 처리하려고합니다. 이 모든 것을 풀기보다는 "숫자"만 입력 될 때까지 모든 서식 보풀의 입력을 가져와 "사전 스트리핑"하십시오. 이렇게하면 두 가지 문제가 해결됩니다. 결과를 쉽게 테스트 할 수 있으며 이제 디스플레이를 위해 다시 렌더링 된 값을 모두 일관되게 형식화 할 수 있습니다. "Complicator 's Gloves"에 대한이 답변에 대한 첫 번째 의견은 잘 읽었습니다. 때로는 문제에 대한 답변이 다르게 접근하는 것입니다.
scunliffe

29
이 투표는 어떻게 그렇게 투표가 좋은가요? 이것은 아무것도 검증 하지 않습니다 . 더 나쁜 것은 다른 모든 전화 번호 유효성 검사 질문이 이것을 참조하는 것입니다 ...
jlars62

303

적어도 북미에 대해서는 NANP 라는 사양이 있습니다.

원하는 것을 정확하게 지정해야합니다. 법적 구분 기호는 무엇입니까? 공백, 대시 및 마침표? 구분자가 허용되지 않습니까? 하나의 혼합 구분 기호를 사용할 수 있습니까 (예 : + 0.111-222.3333)? 확장 (예 : 111-222-3333 x 44444)은 어떻게 처리됩니까? 911과 같은 특수 숫자는 어떻습니까? 지역 번호는 선택 사항입니까, 아니면 필수입니까?

7 자리 또는 10 자리 숫자에 대한 정규식은 다음과 같습니다. 확장자는 허용되고 구분자는 공백, 대시 또는 마침표입니다.

^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$

7
여기에는 확장 섹션이 없습니다 (사용자가 별도의 필드에 ext를 입력하게하십시오) : ^ (? : (? : \ +? 1 \ s * (? : [.-] \ s *)?)? (? : (\ s * ([2-9] 1 [02-9] | [2-9] [02-8] 1 | [2-9] [02-8] [02-9])) \ s *) | ([2-9] 1 [02-9] | [2-9] [02-8] 1 | [2-9] [02-8] [02-9])) \ s * (? : [ .-] \ s *)?)? ([2-9] 1 [02-9] | [2-9] [02-9] 1 | [2-9] [02-9] {2}) \ s * (? : [.-] \ s *)? ([0-9] {4}) $
aarona

18
다음은 10 자리 전화 번호 (843-1212와 같은 7 자리가 아님) 와만 일치하는 버전입니다. /(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})/
Brian Armstrong

8
10 자리는 지역 코드 주위에 () 받아들이고, 나던 국가 코드로 일을 선행 할 수(?:(?:(\s*\(?([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\)?\s*(?:[.-]\s*)?)([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})
브룩.

5
@StevenSoroka 저는 정규 표현이 제 작업의 주요 부분이기 때문에 지난 2 년간 책상 옆에 ​​제프리 프리델의 저의 책을 가지고있었습니다. 정규식을 실제로 이해하려면 시간이 걸립니다. 때때로,이 사이트의 독자들은 특히 전화 번호 표시와 같이 많은 코너 케이스가있는 도메인에서 독자적으로 글을 쓰는 것이 아니라 기존 솔루션을 찾고있을뿐입니다.
Justin R.

7
@ fatcat1111 이해합니다. 그러나 여기에 나오는 대부분의 응답은 "나도"유형의 일회성 정규 표현식으로, 귀사의 사례에 맞지 않을 수 있습니다. 이것들은 내가 사용하려고하는 모든 웹 사이트에서 끝나고 누군가가 반 구운 정규식을 사용했기 때문에 우편 번호, 전화 번호 또는 전자 메일 주소를 입력 할 수 없습니다 (예 : +는 전자 메일 주소의 유효한 문자입니다) ). 이 페이지에서 가장 좋은 반응은 사용자가 냅킨으로 긁힌 정규식이 아닌 라이브러리를 가리 킵니다.
Steven Soroka

298
.*

사용자가 전화 번호를 알려주려면 전화 번호를 올바르게 입력해야합니다. 그들이 당신에게 그것을주고 싶지 않다면 유효한 숫자를 입력하도록 강요하면 경쟁 업체의 사이트로 보내거나 정규식에 맞는 임의의 문자열을 입력하게됩니다. 나는 심지어 프리미엄 운세 운세 핫라인의 수를 찾아보고 그 대신에 들어가기를 유혹 할 수도 있습니다.

또한 다음 중 하나를 웹 사이트의 유효한 항목으로 간주합니다.

"123 456 7890 until 6pm, then 098 765 4321"  
"123 456 7890 or try my mobile on 098 765 4321"  
"ex-directory - mind your own business"

202
나는 여기에 정서에 동의하지만 때로는 전화 번호가 실제로 사용자의 관심에 중요한 것으로 사용될 때 유효성 검사를 수행하는 것이 좋습니다. 가장 좋은 예는 구매에 대한 신용 카드 승인입니다. 전화 번호가 틀리면 인증에 실패 할 수 있습니다.
Pointy

53
사용자가 전화 번호를 입력하지 않으려면 필드를 선택적으로 허용 할 수 있지만 사용자가 전화 번호를 입력 할 경우 유효한 전화 번호를 입력하도록 요청해야합니까?
Joel McBeth

11
또한 유효성 검사의 역할은 사람들이 지역 코드 등을 추가하여 기억해야 할 수도 있지만 사실 후에는 추측 할 수없는 지역 코드를 추가하도록 상기시키는 것입니다.
벤 매킨타이어

29
@Pointy 그러나 정규식 유효성 검사는 도움이되지 않습니다. 전화 번호가 올바른지 실제로 확인하는 유일한 방법은 실제로 휴대 전화로 메시지를 전송하고 사용자가 일종의 확인 코드를 사용하여 확인하도록하는 것입니다. 이것이 숫자 정확성이 중요 할 때하는 일입니다. 그 밖의 모든 것들은 사용자의 편의를 위해 일부 (일부는 아님) 오타로부터 보호하고 어떤 것도 검증하지 않습니다.
Alex B

14
멋있는. 내 전화 번호는 1 '또는 1 = 1-PWNED 입니다. 참조 xkcd.com/327owasp.org/index.php/Testing_for_SQL_Injection_(OWASP-DV-005)
아론 뉴턴

171

또한 " libphonenumber "Google 라이브러리를 참조하십시오. 나는 그것이 정규 표현식이 아니라는 것을 알고 있지만 정확히 원하는 것을합니다.

예를 들어 다음을 인식합니다.

15555555555

가능한 숫자이지만 유효한 숫자는 아닙니다. 또한 미국 이외의 국가를 지원합니다.

기능의 하이라이트 :

  • 전 세계 모든 국가 / 지역의 전화 번호 구문 분석 / 포맷 / 확인
  • getNumberType-숫자 자체를 기반으로 숫자의 유형을 가져옵니다. 유선, 모바일, 무료, 프리미엄 요금, 공유 비용, VoIP 및 개인 번호 (가능한 경우)를 구별 할 수 있습니다.
  • isNumberMatch -두 숫자가 동일 할 수 있는지에 대한 신뢰 수준을 얻습니다.
  • getExampleNumber/ getExampleNumberByType-필요한 전화 번호 유형을 지정하는 옵션과 함께 모든 국가 / 지역에 유효한 예시 번호를 제공합니다.
  • isPossibleNumber -전체 유효성 검사보다 훨씬 빠른 길이 정보 만 사용하여 전화 번호가 가능한지 빠르게 추측합니다.
  • isValidNumber -길이 및 접두사 정보를 사용하여 지역 전화 번호의 전체 유효성 검사
  • AsYouTypeFormatter -사용자가 각 숫자를 입력 할 때 즉시 전화 번호를 형식화합니다.
  • findNumbers -텍스트 입력에서 숫자를 찾습니다.
  • PhoneNumberOfflineGeocoder -전화 번호와 관련된 지리 정보를 제공합니다.

전화 번호 확인의 가장 큰 문제는 문화적으로 매우 다르다는 것입니다.

  • 미국
    • (408) 974–2042A는 유효한 미국 번호
    • (999) 974–2042유효한 미국 번호 가 아닙니다
  • 호주
    • 0404 999 999A는 유효한 호주의 수는
    • (02) 9999 9999유효한 호주 번호 이기도합니다
    • (09) 9999 9999유효한 호주 번호 가 아닙니다

정규식은 전화 번호의 형식을 확인하는 데는 좋지만 실제로 전화 번호 의 유효성 을 확인할 수는 없습니다.

전화 번호를 테스트하기 위해 간단한 정규 표현식을 건너 뛰고 Google과 같은 라이브러리를 사용하는 것이 좋습니다 libphonenumber(GitHub 프로젝트 링크) .

libphonenumber를 소개합니다!

더 복잡한 예제 중 하나를 사용 하면 다음 데이터1-234-567-8901 x1234 를 얻을 수 있습니다 (온라인 데모 링크) .libphonenumber

Validation Results

Result from isPossibleNumber()  true
Result from isValidNumber()     true

Formatting Results:

E164 format                    +12345678901
Original format                (234) 567-8901 ext. 123
National format                (234) 567-8901 ext. 123
International format           +1 234-567-8901 ext. 123
Out-of-country format from US  1 (234) 567-8901 ext. 123
Out-of-country format from CH  00 1 234-567-8901 ext. 123

따라서 전화 번호가 유효한지 여부를 알 수있을뿐만 아니라 로캘에서 일관된 전화 번호 형식을 얻습니다.

보너스로, libphonenumber전화 번호의 유효성을 확인할 수있는 많은 데이터 세트가 있으므로 +61299999999(국제 버전 (02) 9999 9999) 과 같은 숫자를 확인하면 형식이 지정된 유효한 숫자로 리턴됩니다.

Validation Results

Result from isPossibleNumber()  true
Result from isValidNumber()     true

Formatting Results

E164 format                    +61299999999
Original format                61 2 9999 9999
National format                (02) 9999 9999
International format           +61 2 9999 9999
Out-of-country format from US  011 61 2 9999 9999
Out-of-country format from CH  00 61 2 9999 9999

libphonenumber는 또한 전화 번호가 감지 된 위치를 파악하고 전화 번호에서 시간대 정보를 얻는 것과 같은 많은 추가 이점을 제공합니다.

PhoneNumberOfflineGeocoder Results
Location        Australia

PhoneNumberToTimeZonesMapper Results
Time zone(s)    [Australia/Sydney]

그러나 잘못된 호주 전화 번호 ( (09) 9999 9999)는 유효한 전화 번호가 아님을 반환합니다.

Validation Results

Result from isPossibleNumber()  true
Result from isValidNumber()     false

Google 버전에는 Java 및 Javascript 용 코드가 있지만 사람들은 Google i18n 전화 번호 데이터 세트를 사용하는 다른 언어 용 라이브러리도 구현했습니다.

항상 한 로케일의 숫자를 받아들이고 항상 하나의 형식으로되어 있다고 확신하지 않는 한, 자신의 코드를 작성하지 말고 전화 번호를 확인하고 표시하기 위해 libphonenumber를 사용하는 것이 좋습니다.


: 또한 이동 포트에서 지금이 있음을 주목 github.com/ttacon/libphonenumber
michaelhanson

가능한 번호인지 확인할 때 국가 코드를 지정할 필요가 없습니까? 나는 PHP 버전을 사용하고 내가 좋아하는 영국의 번호를 입력하면 (실수로 0의 대체)하고있어 07700000000내가 얻을 Missing or invalid default region.오류입니다. 그러나 국가 코드를 지정하면 전달됩니다.
BugHunterUK

참고 :이 라이브러리는 일부 국가, phpinterviewquestions.co.in/blog/ionic/…을
sijo vijayan

1
숫자를 구문 분석 할 때 @ BugHunterUK (및이 질문을 겪고 똑같은 것을 궁금해하는 사람)는 예상 지역을 지정할 수 있으며 라이브러리는 해당 지역에서 국제 번호를 찾습니다. 지정하지 않으면 유효한 국제 형식이 아닌 것은 거부됩니다.
IMSoP

고려 github.com/nyaruka/phonenumbers을 이 구글보다는 libphonenumber에서 권장하는 "공식적인"이동 패키지가되었다한다.
DeeZone

78

/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i

이것은 다음과 일치합니다.

 - (+351) 282 43 50 50
 - 90191919908
 - 555-8909
 - 001 6867684
 - 001 6867684x1
 - 1 (234) 567-8901
 - 1-234-567-8901 x1234
 - 1-234-567-8901 ext1234
 - 1-234 567.89/01 ext.1234
 - 1(234)5678901x1234
 - (123)8575973
 - (0055)(123)8575973

$ n이면 다음을 저장합니다.

  1. 국가 표시기
  2. 전화 번호
  3. 신장

https://www.regexpal.com/?fam=99127에서 테스트 할 수 있습니다.


이것은 내가 본 가장 포괄적 인 정규 표현식이었습니다. 제거 할 때까지 주변에 쉽게 얻을 ^하고 $그렇지 않으면 내가 사용 주위를 얻을 수있어 [111] [111] [1111]111--111--1111등이있다. (죄송합니다, 마지막 댓글 삭제)
bafromca

다시 말 해주세요. 이해할 수 없습니다 : "^ 및 $를 제거하거나 [111] [111] [1111]을 사용하여 주변을 둘러 볼 수있을 때까지 쉽게 돌아 다닐 수 있습니다." ^그리고 를 복용하면 '[111] [111] [1111]'의 유효성을 검사한다는 의미 $입니까?
Ismael Miguel

나는 당신의 정규식 사용하여 주변에 도착 [111] [111] [1111]하고 111--111--1111나는이 제거 될 때까지 ^$정규식에서.
bafromca

11
^^^ 이것은 댓글 스레드가 채팅에 들어 가지 않아야하는 좋은 예입니다. 이 대화가 어떻게 진행되었는지에 관심이 많으며이 ReGex가 내 앱에서 사용하기에 충분히 견고한 지 알아야합니다. 불행히도 채팅 대화는 이제 사라졌습니다.
Matt Cashatt

1
솔직히 말해서 채팅을하지 않았습니다. 설명을 여러 번 요청한 후에 나는 정보가 없었습니다. 온라인에서 찾은 모든 종류의 숫자를 다양한 형식으로 항상 직접 시도 할 수 있습니다. 이 전화 번호로 시도한 한 가지 방법은 여러 전화 번호를 사용하는 것이지만 주위에 공백이 있으면 제대로 작동하지 않습니다. 그리고 나는 자릿수를 계산하고 특정 금액을 집행하는 솔루션을 찾아야합니다.
Ismael Miguel

63

모든 공백을 제거하는 대답은 깔끔하지만 실제로 발생하는 문제를 해결하지는 못합니다. 즉 정규 표현식을 찾는 것입니다. 예를 들어 웹 페이지를 다운로드하고 정규식을 사용하여 모든 전화 번호를 추출하는 테스트 스크립트를 사용하십시오. 어쨌든 정규식이 필요하기 때문에 정규식이 모든 작업을 수행하도록 할 수도 있습니다. 나는 이것을 생각해 냈다.

1?\W*([2-9][0-8][0-9])\W*([2-9][0-9]{2})\W*([0-9]{4})(\se?x?t?(\d*))?

다음은이를 테스트하는 펄 스크립트입니다. 일치하면 $ 1에 지역 번호가 포함되고 $ 2와 $ 3에 전화 번호가 포함되며 $ 5에 내선 번호가 포함됩니다. 내 테스트 스크립트는 인터넷에서 파일을 다운로드하고 그 안에있는 모든 전화 번호를 인쇄합니다.

#!/usr/bin/perl

my $us_phone_regex =
        '1?\W*([2-9][0-8][0-9])\W*([2-9][0-9]{2})\W*([0-9]{4})(\se?x?t?(\d*))?';


my @tests =
(
"1-234-567-8901",
"1-234-567-8901 x1234",
"1-234-567-8901 ext1234",
"1 (234) 567-8901",
"1.234.567.8901",
"1/234/567/8901",
"12345678901",
"not a phone number"
);

foreach my $num (@tests)
{
        if( $num =~ m/$us_phone_regex/ )
        {
                print "match [$1-$2-$3]\n" if not defined $4;
                print "match [$1-$2-$3 $5]\n" if defined $4;
        }
        else
        {
                print "no match [$num]\n";
        }
}

#
# Extract all phone numbers from an arbitrary file.
#
my $external_filename =
        'http://web.textfiles.com/ezines/PHREAKSANDGEEKS/PnG-spring05.txt';
my @external_file = `curl $external_filename`;
foreach my $line (@external_file)
{
        if( $line =~ m/$us_phone_regex/ )
        {
                print "match $1 $2 $3\n";
        }
}

편집하다:

정규식에서 \ W *를 \ s * \ W? \ s *로 변경하여 조금 강화할 수 있습니다. 예를 들어 양식을 작성할 때 사용자 입력의 유효성을 검사하는 것과 관련하여 정규식을 생각하지 않았지만 이러한 변경으로 인해 정규식을 해당 목적으로 사용할 수 있습니다.

'1?\s*\W?\s*([2-9][0-8][0-9])\s*\W?\s*([2-9][0-9]{2})\s*\W?\s*([0-9]{4})(\se?x?t?(\d*))?';

2
참고로 정규 표현식도 일치합니다. (4570457-6789이것은 꽤 일반적인 오타입니다. 경기 그룹도 왜곡됩니다 : rubular.com/r/TaTP0mHL5c
SooDesuNe

@SooDesuNe Prepending (^|[^\d\n])( 여러 줄 플래그를 설정 한 상태)은 숫자 앞에 바로 붙지 않도록하여 일반적인 문제를 방지합니다.
btown

이것은 북미 중심입니다. "44 7911 123456"
Ben Wheeler

43

아무도이 스레드에 대한 답변으로 내 답변을 포함 시키기로 결정하기 전에 다른 SO 질문에 대해이 질문에 대답했습니다. 왜냐하면 아무도 항목을 요구하거나 요구하지 않는 방법을 다루지 않고 정규 표현식을 전달하는 사람이 없었기 때문입니다.

해당 사이트의 게시물을 통해 누구나 원하는 전화 번호 형식으로 자신의 정규식을 만드는 데 도움이되는 빠른 가이드를 만들었습니다. 다른 사이트에서와 같이 너무 제한적이라면 원하는 결과를 얻지 못할 수도 있으며 전 세계에서 가능한 모든 전화 번호를 받아들이는 "하나의 크기에 모두 맞는"솔루션이 없으며 선택한 형식으로 수락하기로 결정한 것만 있습니다. 자신의 책임하에 사용하십시오.

빠른 치트 시트

  • 표현식을 시작하십시오. /^
  • 공백이 필요한 경우 다음을 사용하십시오. [\s]또는\s
  • 당신이 괄호를 필요로 할 경우, 사용 [(]하고 [)]. \(and를 사용하면 \)추악하고 혼란 스러울 수 있습니다.
  • 선택 사항 인 것을 원한다면 그 ?뒤에
  • 하이픈을 원하면 -또는을 입력하십시오 [-]. 그러나 일련의 다른 문자를 맨 처음이나 마지막에 넣지 않으면 이스케이프해야 할 수도 있습니다. \-
  • 슬롯에서 다른 선택 사항을 승인하려면 옵션 주위에 대괄호를 넣으십시오 [-.\s]. 하이픈, 마침표 또는 공백이 필요합니다. 마지막 대괄호 뒤의 물음표는 해당 슬롯에 대한 모든 옵션을 선택합니다.
  • \d{3}: 000-999의 3 자리 숫자가 필요합니다. 의 속기입니다 [0-9][0-9][0-9].
  • [2-9] : 해당 슬롯에 숫자 2-9가 필요합니다.
  • (\+|1\s)?: "plus"또는 1과 공백 (파이프 문자, |"는"또는 ")을 허용하고 선택 사항으로 만드십시오. "더하기"부호는 이스케이프되어야합니다.
  • 특정 숫자가 슬롯과 일치하도록하려면 숫자를 입력하십시오. [246]2, 4 또는 6 [77|78]이 필요합니다. 77 또는 78이 필요합니다.
  • $/ : 표현 끝내기

1
이것은 매우 유용하지만 {min, max} 식을 의심하고 찾고 있습니다. 도울 수 있니?
Ataboy Josef

그것이 우리가 이야기하는 한 자리라면 (그리고 그에 따라 일치시킬 수 있습니다), [2-9]거기에 넣은 블록을 보십시오 . 즉, 최소값은 2이고 최대 값은 9입니다. 그에 따라 조정하십시오.
vapcguy

30

나는 가장 간단하게 썼다 (점은 필요하지 않지만).

^ ([0-9 \ (\) \ / \ + \-] *) $

아래에서 언급했듯이, 구조 / 순서가 아닌 문자 만 검사합니다.


38
이것은 기술적으로 유효하지 않은 수많은 숫자의 유효성을 검사합니다. "-+ () () ()) ())))" 정규식을 읽는 방법을 배우면 현재하고있는 일을 이해할 수 있습니다.
Steven Soroka

3
@StevenSoroka 기술적으로 그것은 유효하지 않은 많은 사례를 허용 할 수도 있지만, 가장 간단한 해결책으로 일반적인 실수를 피하도록 사용자를 돕는 것에 대해 생각할 때, 다음과 같은 방법이 있습니다 :)
happyhardik

2
이것은 또한 공백과 일치하는 빈 줄
Wasim A.

1
@HappyHardik. 과연. 간단하고 강력하며 기본 유효성 검사를 위해 사용자가 둘 이상의 점, 대시, 대괄호 또는 플러스를 입력 할 수 있습니다.
dijipiji

방금 사용했는데 여러면에서 잘못되었습니다. 예를 들어 영국 전화 번호는 +44로 시작하거나 전화 번호는 (0)을 가질 수 있습니다. 그러나 이것은 정규 표현식에 따라 유효하지 않습니다. @Ismael Miguel의 답변을 추천합니다. 제대로 작동하므로 답변을 수정하는 것이 좋습니다.
Stelios Voskos

22

필드에 임의의 쓰레기가 없는지 확인하려면 (예 : 양식 스패머)이 정규식은 훌륭하게 수행해야합니다.

^[0-9+\(\)#\.\s\/ext-]+$

숫자의 수 또는 해당 숫자에서 유효한 숫자에 대한 특별한 규칙이 없으며 숫자, 괄호, 대시, 더하기, 공백, 파운드, 별표, 마침표, 쉼표 또는 문자 만 확인합니다. e, x, t존재한다.

국제 번호 및 현지화 형식과 호환되어야합니다. 일부 지역에 대괄호, 중괄호 또는 꺾쇠 괄호를 사용해야 할 필요성이 있습니까? (현재는 포함되어 있지 않습니다).

자릿수 별 규칙 (예 : 미국 지역 코드 및 접두사 (교환 코드) 등)을 유지하려면 200-999 범위 내에 있어야합니다. 미래의 어느 시점에서나 세계 어느 나라에서나 구식이 될 수있는 복잡한 규칙 집합을 유지하는 것은 재미 있지 않습니다.

그리고 숫자가 아닌 모든 문자를 제거하면 서버 측에서 잘 작동 할 수 있지만 (특히이 값을 다이얼러에 전달하려는 경우) 특히 사용자가 원하는 경우 유효성 검사 중에 사용자의 입력을 스 래시하지 않을 수 있습니다 다른 분야에서 수정하십시오.


22

()일반적인 영국 번호를 쓰는 스타일에는 문자 를 제거 할 수 없습니다. +44 (0) 1234 567890즉 국제 번호로 전화를 걸거나
+441234567890
영국 전화를 걸 수 있습니다.01234567890



12

무제한 정규식에 대한 나의 시도 :

/^[+#*\(\)\[\]]*([0-9][ ext+-pw#*\(\)\[\]]*){6,45}$/

수락합니다 :

+(01) 123 (456) 789 ext555
123456
*44 123-456-789 [321]
123456
123456789012345678901234567890123456789012345
*****++[](][((( 123456tteexxttppww

거부 :

mob 07777 777777
1234 567 890 after 5pm
john smith
(empty)
1234567890123456789012345678901234567890123456
911

표시를 위해 소독하는 것은 귀하의 책임입니다. 유효성 검사 후에 는 숫자 일 있습니다.


12

나는 이것이 잘 작동한다는 것을 알았다.

^\(*\+*[1-9]{0,3}\)*-*[1-9]{0,3}[-. /]*\(*[2-9]\d{2}\)*[-. /]*\d{3}[-. /]*\d{4} *e*x*t*\.* *\d{0,4}$

다음 숫자 형식에서 작동합니다.

1-234-567-8901
1-234-567-8901 x1234
1-234-567-8901 ext1234
1 (234) 567-8901
1.234.567.8901
1/234/567/8901
12345678901
1-234-567-8901 ext. 1234
(+351) 282 433 5050

전역 및 여러 줄 플래그를 사용하여 확인하십시오.

링크 : http://www.regexr.com/3bp4b


11

양식 유효성 검사에 대해 이야기하는 경우 국가 및 공급자 표준이 다르기 때문에 올바른 의미뿐만 아니라 올바른 데이터의 유효성을 검사하는 정규 표현식은 매우 복잡합니다. 최신 상태를 유지하는 것도 어려울 것입니다.

나는 질문이 광범위하게 유효한 패턴을 찾는 것으로 해석합니다. 예를 들어 유효한 숫자 세트를 가지고 있지만 간선, 교환 등이 국가 코드 접두사의 유효한 패턴으로 검증되지 않는 등 내부적으로 일관성이 없을 수 있습니다 .

북미는 간단하며 국제적으로 사람들이 숫자를 지정하고 기억하는 방식을 다루는 '아이디 오 매틱'패턴을 사용하는 것을 선호합니다.

^((((\(\d{3}\))|(\d{3}-))\d{3}-\d{4})|(\+?\d{2}((-| )\d{1,8}){1,5}))(( x| ext)\d{1,5}){0,1}$

북미 패턴은 하나의 괄호가 포함되어 있으면 둘 다 포함되도록합니다. 국제은 선택적인 초기 '+'및 국가 코드를 설명합니다. 그 후, 당신은 관용구에 있습니다. 유효한 일치는 다음과 같습니다.

  • (xxx)xxx-xxxx
  • (xxx)-xxx-xxxx
  • (xxx)xxx-xxxx x123
  • 12 1234 123 1 x1111
  • 12 12 12 12 12
  • 12 1 1234 123456 x12345
  • +12 1234 1234
  • +12 12 12 1234
  • +12 1234 5678
  • +12 12345678

나의 경험이 북미, 유럽 및 작은 아시아 지역으로 제한되어 있기 때문에 이것은 편향 될 수 있습니다.


Javascript 유효성 검사 스크립트에서 위의 내용을 구현하려고했지만 invalid quantifier오류가 계속 발생합니다. 내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?
Jannis

전화가 기호없이 지정되었지만 공백과 국가 코드가있는 사소한 경우를 추가하려고합니다. 유럽에서는 지역 및 휴대 전화 번호가 일반적입니다. 676412342, 676 46 32 12, 676 463 212
rupps

11

다음은 달성해야 할 검증과 가장 일치하는 훌륭한 패턴입니다. 나는 원래의 저자는 아니지만이 문제가 매우 복잡하고 간결하거나 유용한 답변이 없다는 것을 알았으므로 공유 할 가치가 있다고 생각합니다.

다음 정규식은 다양한 전 세계 전화 번호 형식으로 널리 사용되는 숫자 및 문자 조합을 포착합니다.

/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/gm

양수 :
+42555.123.4567
+ 1- (800) -123-4567
+7 555 1234567
+7 (926) 1234567
(926) 1234567
+79261234567
926 1234567
9261234567
1234567
123-4567
123-89-01
495 1234567
469 123 45 67
89,261,234,567
8 (926) 1234567
926.123.4567
415-555-1234
650-555-2345
(416)555-3456
202 555 4567
4,035,555,678
1 416 555 9292

부정적 :
926 34 8800600
-APPLE

원본 출처 : http://www.regexr.com/38pvb


이것은 확장에 대한 지원이 제한되어 있습니다. "616-555-1234 x567"과 일치하지만 "616-555-1234 내선 567"과 일치하지 않습니다.
Jon Schneider

2
예를 들어 거짓 긍정 "-------- (((((((((55555555" "또는"99999999999999999999999 ")
mikep

Nitherland macdonalds 번호 +31 76 596 4192의 유효성을 검사하지 않습니다 (난 임의의 숫자를 테스트하는
중임

10

내 문제는이 주제에 대한 답변의 양에 의해 강화됩니다.이 문제에 대한 해결책은 거의 무한하지만 그 어느 것도 우아하지 않을 것입니다.

솔직히 전화 번호를 확인하지 않는 것이 좋습니다. 서로 다른 모든 합법적 인 형식을 허용하는 크고 털이 많은 유효성 검사기를 작성할 수 있더라도 처음에는 전화 번호와 거의 닮은 부분이 거의 없습니다.

제 생각에는 가장 우아한 해결책은 최소 길이를 확인하는 것입니다.


여러 가지를 시도하고 기존 데이터와 사용자의 피드백을 거친 후 동의하는 경향이 있습니다.
Christopher King

때로는 유효성 검사가 필요합니다. 확인 코드를 보내는 경우 스패머가 필드에 입력 한 임의의 가비지에 코드를 보낼 수 없습니다. 나는 확실히 숫자가 만들고 싶어 아마 그것을 메시징 자원 낭비하기 전에 전화 번호.
누가 복음

10

다음은 필리핀 휴대 전화 번호의 간단한 정규식 패턴입니다.

((\+[0-9]{2})|0)[.\- ]?9[0-9]{2}[.\- ]?[0-9]{3}[.\- ]?[0-9]{4}

또는

((\+63)|0)[.\- ]?9[0-9]{2}[.\- ]?[0-9]{3}[.\- ]?[0-9]{4}

다음과 일치합니다.

+63.917.123.4567  
+63-917-123-4567  
+63 917 123 4567  
+639171234567  
09171234567  

첫 번째는 두 자리 국가 코드와 일치하며 두 번째는 필리핀 국가 코드와 독점적으로 일치합니다.

여기에서 테스트하십시오 : http://refiddle.com/1ox


감사. 028231234와 같은 지역 번호를 가진 유선 전화 번호는 어떻습니까? 지역 코드가 2-3 자리 숫자이고 항상 0보다 앞에 오는지 궁금합니다.
stormwild

9

지금까지 최선을 다하겠습니다. 위의 형식을 처리하지만 다른 가능한 형식이 누락되었습니다.

^\d?(?:(?:[\+]?(?:[\d]{1,3}(?:[ ]+|[\-.])))?[(]?(?:[\d]{3})[\-/)]?(?:[ ]+)?)?(?:[a-zA-Z2-9][a-zA-Z0-9 \-.]{6,})(?:(?:[ ]+|[xX]|(i:ext[\.]?)){1,2}(?:[\d]{1,5}))?$

9

단일 / 간단한 정규식으로 국제 전화 번호를 다루는 데 어려움을 겪을 수 있습니다. 국제 전화 번호 및 심지어는 북미 전화 번호의 어려움에 대한 이 게시물 을 참조하십시오 .

처음 몇 자리 숫자를 구문 분석하여 국가 코드가 무엇인지 확인한 다음 국가에 따라 다르게 행동해야합니다.

그 외에도-귀하가 제공 한 목록에는 다른 일반적인 미국 형식이 포함되어 있지 않습니다-초기 1 제외. 미국의 대부분의 휴대 전화는 필요하지 않으며 국제 전화를 걸지 않는 한 젊은 세대를 방해합니다.

까다로운 문제임을 올바르게 확인했습니다 ...

-아담


제공된 솔루션이 아닙니다. 것이 가능하다. 까다 롭거나 복잡하다고해서 팔을 throw어야한다는 의미는 아닙니다.
Eric Hodonsky

7

이 답변을 읽은 후에는 많은 텍스트를 구문 분석하고 모든 형식 (더하기 부호가 있거나없는 국제 전화 포함)으로 전화 번호를 가져올 수있는 간단한 정규 표현식이없는 것처럼 보입니다.

다음은 최근에 클라이언트 프로젝트에 사용한 것으로 모든 형식의 전화 번호를 tel : 링크로 변환해야했습니다.

지금까지는 그들이 던진 모든 작업을 수행하고 있지만 오류가 발생하면이 답변을 업데이트 할 것입니다.

정규식 :

/(\+*\d{1,})*([ |\(])*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})/

모든 전화 번호를 tel : 링크로 바꾸는 PHP 기능 (누군가 궁금한 경우) :

function phoneToTel($number) {
    $return = preg_replace('/(\+*\d{1,})*([ |\(])*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})/', '<a href="tel:$1$3$4$5">$1 ($3) $4-$5</a>', $number); // includes international
    return $return;
}

이 정규식이 일치했습니다 +1 1234562222222222222222222222.
Varda Elentári

왜 돌아 오지 않습니까?
thexande

"9999999999999999999999999999999999999999"에 대해 False positive
Ben Wheeler

6

내가 생각 번호 : 전화 : 미국정규 표현식 : 공통 (특히 소스 정규 표현식 :: 공통을 :: URI는 : : RFC2806 ) 펄 모듈을 도울 수 있습니다.

질문은 숫자를 검증하는 목적을 설명하기 위해 조금 더 자세하게 지정해야합니다. 예를 들어 911은 미국에서 유효한 숫자이지만 911x는 x 값이 아닙니다. 전화 회사는 전화 걸기 완료 시점을 계산할 수 있습니다. 이 문제에는 몇 가지 변형이 있습니다. 그러나 정규 표현식은 지역 코드 부분을 확인하지 않으므로 걱정할 필요가 없습니다.

이메일 주소 확인과 마찬가지로, 유효한 결과가 있더라도 시도 할 때까지 누군가에게 할당되었는지 알 수 없습니다.

사용자 입력의 유효성을 검사하려는 경우 결과를 정규화하여 수행하지 않는 이유는 무엇입니까? 사용자가 숫자를 입력하면 유효한 숫자로 인식 할 수 없으며 입력 한대로 저장하거나 실패 할 수없는 문자를 제거하십시오. 번호 : 전화 : 표준화 펄 모듈은 영감의 원천이 될 수 있습니다.


나는 여기서 사지로 나가서 911을 전화 번호로 허용하는 것이이 정규식의 거의 모든 응용 프로그램에서 아마도 나쁜 생각이라고 말할 것입니다. 그래도 잘 잡는다.
Nicholas Flynt

4

저는 시장 조사 회사에서 일하고 있으며 이러한 유형의 입력을 시간별로 필터링해야합니다. 너무 복잡합니다. 영숫자가 아닌 문자를 제거하고 확장명이 있는지 확인하십시오.

추가 분석을 위해 유효한 숫자의 데이터베이스에 액세스 할 수있을뿐만 아니라 유선 또는 모바일인지, 연결이 끊긴 지 등을 알려주는 많은 공급자 중 하나에 가입 할 수 있습니다. 비용이 많이 듭니다.


확인? 123 % $) * % () $ * () # 456 * () * $ # (* (# $ @ 8908 제안 된 솔루션과 일치
PlexQ

1
@PlexQ 555-123-1234, 07777777777, 90210, 01/01/1901-사용자는 유효성 검사를 통해 가비지 램핑에 창의적입니다. 지나치게 제한적인 유효성 검사를 사용하여 잘못된 데이터를 제공함으로써 이상한 데이터를 가진 사람들을 속이지 않는 것이 좋습니다.
ReactiveRaven

4

서식 문자를 바꾸고 나머지 전화 유효 여부를 확인하십시오. PHP에서

 $replace = array( ' ', '-', '/', '(', ')', ',', '.' ); //etc; as needed
 preg_match( '/1?[0-9]{10}((ext|x)[0-9]{1,4})?/i', str_replace( $replace, '', $phone_num );

이와 같은 복잡한 정규 표현식을 깨는 것은 효과적이지만 훨씬 간단합니다.


3

나는 이것이 흥미있는 것을 발견했다. 나는 그것을 테스트하지 않았지만 그것이 효과가있는 것처럼 보입니다.

<?php
/*
string validate_telephone_number (string $number, array $formats)
*/

function validate_telephone_number($number, $formats)
{
$format = trim(ereg_replace("[0-9]", "#", $number));

return (in_array($format, $formats)) ? true : false;
}

/* Usage Examples */

// List of possible formats: You can add new formats or modify the existing ones

$formats = array('###-###-####', '####-###-###',
                 '(###) ###-###', '####-####-####',
                 '##-###-####-####', '####-####', '###-###-###',
                 '#####-###-###', '##########');

$number = '08008-555-555';

if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}

echo "<br />";

$number = '123-555-555';

if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}

echo "<br />";

$number = '1800-1234-5678';

if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}

echo "<br />";

$number = '(800) 555-123';

if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}

echo "<br />";

$number = '1234567890';

if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}
?>

4
귀하의 메시지는 귀하가이 코드를 작성하지 않았 음을 나타냅니다. 출처를 인용 해 주시겠습니까?
Alastair Irvine


3

이를 위해 마스크 입력을 사용하는 것이 좋습니다. 이런 식으로 사용자는 숫자 만 입력 할 수 있으며 원하는대로 서식을 지정할 수 있습니다. 이것이 웹 응용 프로그램을위한 것인지 확실하지 않지만 그것이있는 경우이 작업을 수행하는 몇 가지 옵션을 제공하는 매우 클릭 jQuery 플러그인이 있습니다.

http://digitalbush.com/projects/masked-input-plugin/

심지어 튜토리얼에서 전화 번호 입력을 숨기는 방법도 설명합니다.


3

JavaScript에서 잘 작동하는 것이 있습니다. Dojo 위젯이 기대했던 것이기 때문에 문자열에 있습니다.

선택적 확장명을 가진 10 자리 북미 NANP 번호와 일치합니다. 공백, 대시 및 마침표는 구분 기호로 허용됩니다.

"^(\\(?\\d\\d\\d\\)?)( |-|\\.)?\\d\\d\\d( |-|\\.)?\\d{4,4}(( |-|\\.)?[ext\\.]+ ?\\d+)?$"

3

나는 같은 문제로 고생하면서 내 응용 프로그램을 미래의 증거로 만들려고 노력했지만이 사람들은 올바른 방향으로 나아갔습니다. 실제로 숫자 자체를 검사하여 작동하는지 여부를 확인하는 것이 아니라 확장 프로그램이 있거나없는 일련의 숫자가 입력되었는지 확인하려고합니다.

사용자가 XML 파일에서 형식화되지 않은 숫자를 가져와야하는 최악의 시나리오는 여전히 숫자를 전화기의 숫자 키패드에 입력하기 만하면 012345678x5아무런 이유가 없습니다. 그런 종류의 RegEx는 다음과 같이 나옵니다.

\d+ ?\w{0,9} ?\d+
  • 01234467 extension 123456
  • 01234567x123456
  • 01234567890

2

내 성향은 숫자가 아닌 숫자를 제거하고 가장 좋은 것을 받아들이는 것에 동의하는 것입니다. 예를 들어 알파벳 전화 번호 "ASK-JAKE"와 같은 것을 금지하지만 적어도 두 자리 숫자가 있는지 확인하십시오.

몇 가지 간단한 펄 표현식은 다음과 같습니다.

@f = /(\d+)/g;
tr/0-9//dc;

첫 번째 그룹을 사용하여 숫자 그룹을 함께 유지하면 서식 힌트를 얻을 수 있습니다. 두 번째 숫자를 사용하여 모든 비 숫자를 사소하게 던지십시오.

일시 중지 한 다음 더 많은 키를 입력해야 할까봐 걱정됩니까? 아니면 555-1212 (경고음 기다림) 123 같은 것입니까?


2
    pattern="^[\d|\+|\(]+[\)|\d|\s|-]*[\d]$" 
    validateat="onsubmit"

숫자로 끝나야하며 (또는 + 또는 숫자로 시작할 수 있으며 +-(또는)를 포함 할 수 있음


2

아일랜드 휴대 전화 번호와 비슷한 일을하는 데 관심이있는 사람은 다음과 같은 간단한 방법으로이를 달성 할 수 있습니다.

http://ilovenicii.com/?p=87

PHP


<?php
$pattern = "/^(083|086|085|086|087)\d{7}$/";
$phone = "087343266";

if (preg_match($pattern,$phone)) echo "Match";
else echo "Not match";

해당 링크에는 JQuery 솔루션도 있습니다.

편집하다:

jQuery 솔루션 :

    $(function(){
    //original field values
    var field_values = {
            //id        :  value
            'url'       : 'url',
            'yourname'  : 'yourname',
            'email'     : 'email',
            'phone'     : 'phone'
    };

        var url =$("input#url").val();
        var yourname =$("input#yourname").val();
        var email =$("input#email").val();
        var phone =$("input#phone").val();


    //inputfocus
    $('input#url').inputfocus({ value: field_values['url'] });
    $('input#yourname').inputfocus({ value: field_values['yourname'] });
    $('input#email').inputfocus({ value: field_values['email'] }); 
    $('input#phone').inputfocus({ value: field_values['phone'] });



    //reset progress bar
    $('#progress').css('width','0');
    $('#progress_text').html('0% Complete');

    //first_step
    $('form').submit(function(){ return false; });
    $('#submit_first').click(function(){
        //remove classes
        $('#first_step input').removeClass('error').removeClass('valid');

        //ckeck if inputs aren't empty
        var fields = $('#first_step input[type=text]');
        var error = 0;
        fields.each(function(){
            var value = $(this).val();
            if( value.length<12 || value==field_values[$(this).attr('id')] ) {
                $(this).addClass('error');
                $(this).effect("shake", { times:3 }, 50);

                error++;
            } else {
                $(this).addClass('valid');
            }
        });        

        if(!error) {
            if( $('#password').val() != $('#cpassword').val() ) {
                    $('#first_step input[type=password]').each(function(){
                        $(this).removeClass('valid').addClass('error');
                        $(this).effect("shake", { times:3 }, 50);
                    });

                    return false;
            } else {   
                //update progress bar
                $('#progress_text').html('33% Complete');
                $('#progress').css('width','113px');

                //slide steps
                $('#first_step').slideUp();
                $('#second_step').slideDown();     
            }               
        } else return false;
    });

    //second section
    $('#submit_second').click(function(){
        //remove classes
        $('#second_step input').removeClass('error').removeClass('valid');

        var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
        var fields = $('#second_step input[type=text]');
        var error = 0;
        fields.each(function(){
            var value = $(this).val();
            if( value.length<1 || value==field_values[$(this).attr('id')] || ( $(this).attr('id')=='email' && !emailPattern.test(value) ) ) {
                $(this).addClass('error');
                $(this).effect("shake", { times:3 }, 50);

                error++;
            } else {
                $(this).addClass('valid');
            }


        function validatePhone(phone) {
        var a = document.getElementById(phone).value;
        var filter = /^[0-9-+]+$/;
            if (filter.test(a)) {
                return true;
            }
            else {
                return false;
            }
        }

        $('#phone').blur(function(e) {
            if (validatePhone('txtPhone')) {
                $('#spnPhoneStatus').html('Valid');
                $('#spnPhoneStatus').css('color', 'green');
            }
            else {
                $('#spnPhoneStatus').html('Invalid');
            $('#spnPhoneStatus').css('color', 'red');
            }
        });

     });

        if(!error) {
                //update progress bar
                $('#progress_text').html('66% Complete');
                $('#progress').css('width','226px');

                //slide steps
                $('#second_step').slideUp();
                $('#fourth_step').slideDown();     
        } else return false;

    });


    $('#submit_second').click(function(){
        //update progress bar
        $('#progress_text').html('100% Complete');
        $('#progress').css('width','339px');

        //prepare the fourth step
        var fields = new Array(
            $('#url').val(),
            $('#yourname').val(),
            $('#email').val(),
            $('#phone').val()

        );
        var tr = $('#fourth_step tr');
        tr.each(function(){
            //alert( fields[$(this).index()] )
            $(this).children('td:nth-child(2)').html(fields[$(this).index()]);
        });

        //slide steps
        $('#third_step').slideUp();
        $('#fourth_step').slideDown();            
    });


    $('#submit_fourth').click(function(){

        url =$("input#url").val();
        yourname =$("input#yourname").val();
        email =$("input#email").val();
        phone =$("input#phone").val();

        //send information to server
        var dataString = 'url='+ url + '&yourname=' + yourname + '&email=' + email + '&phone=' + phone;  



        alert (dataString);//return false;  
            $.ajax({  
                type: "POST",  
                url: "http://clients.socialnetworkingsolutions.com/infobox/contact/",  
                data: "url="+url+"&yourname="+yourname+"&email="+email+'&phone=' + phone,
                cache: false,
                success: function(data) {  
                    console.log("form submitted");
                    alert("success");
                }
                });  
        return false;

   });


    //back button
    $('.back').click(function(){
        var container = $(this).parent('div'),
        previous  = container.prev();

        switch(previous.attr('id')) {
            case 'first_step' : $('#progress_text').html('0% Complete');
                  $('#progress').css('width','0px');
                       break;
            case 'second_step': $('#progress_text').html('33% Complete');
                  $('#progress').css('width','113px');
                       break;

            case 'third_step' : $('#progress_text').html('66% Complete');
                  $('#progress').css('width','226px');
                       break;

        default: break;
    }

    $(container).slideUp();
    $(previous).slideDown();
});


});

소스 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.