네덜란드 전화 번호 용 정규식을 만들어야합니다. 나는 지금까지 무엇을 가지고 : 정규식과 같은 일반 번호에 대해 완벽하게 작동네덜란드어 전화 번호를 사용하는 정규식
[0-9\\-\\+]{8,14}
: 나는 "예 :"112 ","0800-1234 "하지만 같은 서비스 번호를 추가해야하지만 020-5951611
0909-12345678 "은 너무 길기 때문에 무효해야합니다. 많은 테스트 사례가있는 파일이 있는데 (여기 아래에 있음), 숫자가 유효하면 true이고, 숫자가 유효하지 않으면 false입니다.
System.err.println("running checkNummer");
TelefoonNummerChecker instance = new TelefoonNummerChecker();
assertEquals(true, instance.checkNummer("020-5951611"));
assertEquals(true, instance.checkNummer("0205951611"));
assertEquals(true, instance.checkNummer("+31205951611"));
assertEquals(true, instance.checkNummer("+3120-5951611"));
assertEquals(true, instance.checkNummer("+31612345678"));
assertEquals(true, instance.checkNummer("+316-12345678"));
assertEquals(true, instance.checkNummer("06-12345678"));
assertEquals(true, instance.checkNummer("0612345678"));
assertEquals(true, instance.checkNummer("0031612345678"));
assertEquals(true, instance.checkNummer("00316-12345678"));
assertEquals(true, instance.checkNummer("0234-123456"));
assertEquals(true, instance.checkNummer("0234123456"));
assertEquals(true, instance.checkNummer("+31234-123456"));
assertEquals(true, instance.checkNummer("+31234123456"));
assertEquals(true, instance.checkNummer("+3132")); // lelystad 0320
assertEquals(true, instance.checkNummer("003132"));
assertEquals(true, instance.checkNummer("0031320-123456"));
assertEquals(true, instance.checkNummer("0320-123456"));
// korte service nummers:
assertEquals(true, instance.checkNummer("112"));
assertEquals(true, instance.checkNummer("0800-1234"));
assertEquals(false, instance.checkNummer("0909-12345678")); // too long
assertEquals(true, instance.checkNummer("090"));
assertEquals(true, instance.checkNummer("08009876"));
assertEquals(false, instance.checkNummer("0808-123456"));
assertEquals(false, instance.checkNummer("+32205951611")); // not valid in NL
assertEquals(false, instance.checkNummer("+3220-5951611")); // not valid in NL
assertEquals(false, instance.checkNummer("02-05951611")); // before dash should be 3 or 4 long
assertEquals(false, instance.checkNummer("02-15951611")); // before dash should be 3 or 4 long
assertEquals(false, instance.checkNummer("0-215951611")); // before dash should be 3 or 4 long
assertEquals(false, instance.checkNummer("02059-51611")); // before dash should be 3 or 4 long
assertEquals(false, instance.checkNummer("0034-1234567")); // before dash may not have 2x a 0
assertEquals(false, instance.checkNummer("0200951611")); // may not start with 0
assertEquals(false, instance.checkNummer("02059516229")); // too long
assertEquals(false, instance.checkNummer("020595162")); // too short
assertEquals(false, instance.checkNummer("020-0234567")); // may not start with 0
assertEquals(false, instance.checkNummer("123456789")); // no 10 numbers
assertEquals(false, instance.checkNummer("1234567890")); // net number doesn't start with 0
assertEquals(false, instance.checkNummer("123-5951619")); // net number doesn't start with 0
assertEquals(false, instance.checkNummer("0320-")); // abo starts with zero
assertEquals(false, instance.checkNummer("+31-205951611")); // no dash before abon number
assertEquals(false, instance.checkNummer("+31-2-05951611")); // no 2x -
assertEquals(false, instance.checkNummer("+31-2-0-5951611")); // no 2x -
assertEquals(false, instance.checkNummer("+31-2-0-595161-1")); // no 2x -
assertEquals(false, instance.checkNummer("06-1-2345678")); // no 2x -
assertEquals(false, instance.checkNummer("020-59-51611")); // no 2x -
assertEquals(false, instance.checkNummer("020-5-9-51611")); // no 2x -
assertEquals(false, instance.checkNummer("0205951-611")); // too long
assertEquals(false, instance.checkNummer("06-1-2345678")); // no 2x -
assertEquals(false, instance.checkNummer("0045106539985")); // not dutch
assertEquals(false, instance.checkNummer("0031476534")); // 0031, not enough numbers next to 0031
assertEquals(false, instance.checkNummer("+310612345678")); // 06 must be 6
assertEquals(false, instance.checkNummer("00310205951688")); // 020 must be 20
System.err.println("end test checkNummer");
누군가가 이것을 도와 줄 수 있기를 바랍니다. 미리 감사드립니다.
편집 : 자바로 작성해야합니다.
정규식을 사용하여 전화 번호 양식을 확인하는 것은 정규식을 사용하여 이메일을 확인하는 것과 동일한 함정을 공유합니다. 모든 걸 잡을 수 있니? 그만한 가치가 있니? 기존 번호 또는 사용자가 의도 한 번호를 검증하려고합니다. 후자의 경우 '번호 확인'입력을 고려하십시오. 사용자가 자주 경험하는 문제가 해결되지 않습니까? 검증 절차가 더 유용할까요? – Gusdor
또 다른 비슷한 질문이 [이전에 요청되었습니다] (http://stackoverflow.com/questions/17949757/regular-expression-for-dutch-phone-number). 거기서 해결책을 시도하고 그것이 당신의 필요를 충족시키는 지보십시오. 또 다른 메모에서는, 문자 클래스에서'+'를 벗어날 필요가 없습니다. 왜냐하면 문자 클래스의 끝 부분에'-'를 넣으면 의미를 잃을 것이고 범위를 만들지 않을 것입니다. 의미. 축하합니다. 방금 4 바이트와 고통을 눈에 저장했습니다. [0-9 + -] {8,14}' – HamZa
영어 코드를 코드 스 니펫에 넣어 주시겠습니까? – Jerry