Шаблон регулярного выражения для проблемы проверки мобильного номера

Я не знаю, что не так с моим кодом, все, что я хочу, это принять номер мобильного телефона в таком формате: 09xxxxxxxxx (всегда начинается с «09» и состоит из 11 цифр). Будем признательны за все усилия. Заранее спасибо.

Вот картина проблемы

Вот коды:

String a2= jTextField6.getText();
String a3 = jTextField7.getText();

Pattern p = Pattern.compile("^(09) \\d {9}$");
Matcher m = p.matcher(jTextField5.getText());

if (!m.matches()){         
     int b = JOptionPane.ERROR_MESSAGE;
     JOptionPane.showMessageDialog(this, "Invalid Mobile Number", "Error", b);    
     return;
}
if (null==a2||a2.trim().isEmpty()){
     int b = JOptionPane.ERROR_MESSAGE;
     JOptionPane.showMessageDialog(this, "Fields should not left blank", "Error", b);
     return;
} 
if (a3==null||a3.trim().isEmpty()){
     int b = JOptionPane.ERROR_MESSAGE;
     JOptionPane.showMessageDialog(this, "Fields should not left blank", "Error", b);  
}

else { 
    int c = JOptionPane.YES_NO_OPTION;
    int d = JOptionPane.showConfirmDialog(this, "Confirm Purchase?","Costume 1", c);
    if (d==0){
        JOptionPane.showMessageDialog( null,"Your costume will be delivered 3-5 working days." +"\n"+"\n"+"                   Thank You!");
    }

Почему в вашем шаблоне есть пробелы?

Jacob G. 15.09.2018 15:37

Почему? Это причина, по которой я получаю ошибку?

mark von 15.09.2018 15:41

Удалите пробелы, у меня это работает: "^ (09) \\ d {9} $"

beatrice 15.09.2018 15:42

все еще говорит мне "Неверный номер", ха-ха

mark von 15.09.2018 15:43

Спасибо, ребята, работает. Я сделал ошибку, извините.

mark von 15.09.2018 15:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
60
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вам нужно удалить пробелы в своем регулярном выражении:

 Pattern p = Pattern.compile("^(09)\\d{9}$");

в противном случае они будут считаться персонажами, которые должны присутствовать.

Используйте режим комментариев, чтобы игнорировать пробелы в шаблоне регулярного выражения. Это можно сделать либо путем передачи флага Pattern.COMMENTS при компиляции шаблона регулярного выражения, либо с помощью встроенного выражения флага (?x).

Пример 1:

Pattern p = Pattern.compile("^(09) \\d {9}$", Pattern.COMMENTS);

Пример 2:

Pattern p = Pattern.compile("(?x)^(09) \\d {9}$");
    final String regex = "^09\\d{9}$";
    final String string = "09518390956"; //matcb
    //final String string = "11518390956"; // fails
    //final String string = "09518390956 "; // fails

    final Pattern pattern = Pattern.compile(regex);
    final Matcher matcher = pattern.matcher(string);

    while (matcher.find()) {
        System.out.println("Full match: " + matcher.group(0));
    }

На какой вопрос вы отвечаете?

Toto 15.09.2018 16:38

Я отвечал на вопрос ... регулярное выражение, отвечающее следующим критериям: начиная с "09" и в общей сложности 11 цифр

Thomas Walsh 15.09.2018 17:40

Вы уверены? Ваше регулярное выражение соответствует 9 цифрам! А зачем использовать Pattern.MULTILINE?

Toto 16.09.2018 10:35

@Toto ты прав, я неправильно понял вопрос. Я обновил свое решение на основе ваших комментариев

Thomas Walsh 16.09.2018 15:33

Другие вопросы по теме