В этом уроке по регулярным выражениям мы научимся проверять введенные пользователем номера телефонов на соответствие определенному формату(в этом примере номера телефонов отформатированы в североамериканском формате ), и если номера верны, то переформатировать их в стандартный формат для отображения. Я протестировал такие форматы, как 1234567890, 123-456-7890, 123.456.7890, 123 456 7890,(123) 456 7890 и все подобные комбинации.
1. Использование регулярных выражений для проверки североамериканских телефонных номеров
Регулярное выражение: ^\\(?([0-9]{3})\\)?[-.\\s]?([0-9]{3})[-.\\s]?([0-9]{4})$
Приведенное выше регулярное выражение можно использовать для проверки всех форматов телефонных номеров на предмет их корректности для североамериканских номеров.
List phoneNumbers = new ArrayList();phoneNumbers.add("1234567890");phoneNumbers.add("123-456-7890");phoneNumbers.add("123.456.7890");phoneNumbers.add("123 456 7890");phoneNumbers.add("(123) 456 7890");//Invalid phone numbersphoneNumbers.add("12345678");phoneNumbers.add("12-12-111");String regex = "^\\(?([0-9]{3})\\)?[-.\\s]?([0-9]{3})[-.\\s]?([0-9]{4})$";Pattern pattern = Pattern.compile(regex);for(String email : phoneNumbers){Matcher matcher = pattern.matcher(email);System.out.println(email +" : "+ matcher.matches());}
Вывод программы:
1234567890 : true123-456-7890 : true123.456.7890 : true123 456 7890 : true(123) 456 7890 : true12345678 : false12-12-111 : false
2. Использование регулярных выражений для форматирования североамериканского телефонного номера
Регулярное выражение:($1) $2-$3
Используйте указанное выше регулярное выражение для переформатирования телефонных номеров, проверенных на предыдущем шаге, для их согласованного хранения/отображения.
List phoneNumbers = new ArrayList();phoneNumbers.add("1234567890");phoneNumbers.add("123-456-7890");phoneNumbers.add("123.456.7890");phoneNumbers.add("123 456 7890");phoneNumbers.add("(123) 456 7890");//Invalid phone numbersphoneNumbers.add("12345678");phoneNumbers.add("12-12-111");String regex = "^\\(?([0-9]{3})\\)?[-.\\s]?([0-9]{3})[-.\\s]?([0-9]{4})$";Pattern pattern = Pattern.compile(regex);for(String email : phoneNumbers){Matcher matcher = pattern.matcher(email);//System.out.println(email +" : "+ matcher.matches());//If phone number is correct then format it to(123)-456-7890if(matcher.matches()){System.out.println(matcher.replaceFirst("($1) $2-$3"));}}
Вывод программы:
(123) 456-7890(123) 456-7890(123) 456-7890(123) 456-7890(123) 456-7890
Регулярное выражение выше будет работать и в JavaScript. Так что держите эти регулярные выражения под рукой, когда они вам понадобятся в следующий раз.