2013-04-21 3 views
5

Это вопрос о RegEx на Java. Я везде искал, но не мог найти ничего похожего на то, что мне нужно. Кроме того, я провел несколько часов, пытаясь самостоятельно.Regex для номера телефона со стандартным номером телефона с кронштейнами

Я нахожусь на последней части школьной лаборатории, закодированной на Java. Я использую Eclipse в качестве моего компилятора. Я создал приложение для членства с использованием компонентов Swing,

Одно из моих полей предназначено для ввода 10-значного номера телефона. Однако мне пришлось сделать это текстовое поле JFormatted, замаскировав текстовое поле в этом формате: «(###) ### - ####». Поэтому, когда программа загружается, что текстовое поле выглядит следующим образом: «(_) - ___»

Теперь все, что мне нужно сделать, это регулярное выражение, которое будет убедиться, что пользователь в 10 цифры. Однако мне нужно, чтобы он работал с замаскированным форматом, который я использовал выше. Это то, что я до сих пор:

pattern = Pattern.compile("\\d{3}\\s\\d{3}-\\d{4}"); 
    matcher = pattern.matcher(phoneText.getText()); 
    if (!matcher.find()) 
    { 
     phoneText.requestFocus(); 
     JOptionPane.showMessageDialog(null, "Phone entered incorrectly. Phone should be:\n" + 
       "10 numeric digits.", 
       "A D D E R R O R",JOptionPane.ERROR_MESSAGE); 
     return; 
    } 

Я считаю, что у меня есть REGEX написанного, где она принимает пространство и тир в формате маска, но я не знаю, как включить круглые скобки.

Edit: Добавление вопроса в правильном формате на кончике Эндрю Томаса:

Что мне нужно сделать, чтобы добавить к моему REGEX включать круглые скобки, которые уже в отформатированный текстовое поле?

Редактировать 2: Вопрос ответил, но добавив образцы на богемский совет, чтобы будущие ученики, которые сталкиваются с этим сообщением, могут его использовать. Извините, я новичок в этом!

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

(123) 456-7890

+0

* «Это вопрос о RegEx в Java» * Это может быть, но из-за отсутствия вопроса. Какой у Вас вопрос? –

+0

Мне было интересно, что добавить в мой regEx, чтобы включить скобки, которые уже находятся в форматированном текстовом поле. –

+0

Что, точно должно соответствовать регулярному выражению? Пожалуйста, перечислите некоторые примеры, чтобы проиллюстрировать ваше намерение. – Bohemian

ответ

4

Вы должны соответствовать ( и ) (Это окружать первые 3 цифры)

Изменить это:

pattern = Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}"); 
          ^^^  ^^^ 

Как вы можете видеть, я добавил \\ до ( и ). Почему?

Некоторые символы имеют особое значение. А так как регулярные выражения - это строки в Java, вам необходимо избегать их на \\ (который представляет собой одиночный \ в Java).

Двойной обратный слеш ускользает специальные символы, чтобы подавить их особое значение, это походит на сообщение:

«Не принимать ( как специальный характер, принять его как обычный символ (».

+0

Я даже не уверен, что это то, что он хочет:/ – Bohemian

+4

Он хочет сопоставить '' (###) ### - #### "' где '#' - цифры. – Maroun

+0

эй Марун Марун это именно то, что я хотел поблагодарить вас так много. Я не добавил двойную обратную косую черту перед открывающей и закрывающей скобками. Я чувствую себя нелепо. –

2

Вы можете использовать \\( и \\) использовать круглые скобки, попробуйте следующее:

Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}"); 
+0

Спасибо. Это была моя нехватка обратной косой черты, которая меня путала! –

Смежные вопросы