Я не знаю, что не так с моим кодом, все, что я хочу, это принять номер мобильного телефона в таком формате: 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!");
}
Почему? Это причина, по которой я получаю ошибку?
Удалите пробелы, у меня это работает: "^ (09) \\ d {9} $"
все еще говорит мне "Неверный номер", ха-ха
Спасибо, ребята, работает. Я сделал ошибку, извините.




Вам нужно удалить пробелы в своем регулярном выражении:
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));
}
На какой вопрос вы отвечаете?
Я отвечал на вопрос ... регулярное выражение, отвечающее следующим критериям: начиная с "09" и в общей сложности 11 цифр
Вы уверены? Ваше регулярное выражение соответствует 9 цифрам! А зачем использовать Pattern.MULTILINE?
@Toto ты прав, я неправильно понял вопрос. Я обновил свое решение на основе ваших комментариев
Почему в вашем шаблоне есть пробелы?