Java RegEx: замена телефонного номера (включая необязательные скобки) - PullRequest
1 голос
/ 21 февраля 2012

Разве это не должно ставить маркеры SPAN вне номера телефона, а не внутри?

String aParagraph = "start 201-555-1212 more (301)-777-1212 again (401) 888-1212 end";
String phoneRegEx = "\\b(\\(?[1-9]{1}[0-9]{2}\\)?[- ]?[1-9]{1}[0-9]{2}-[0-9]{4})\\b";
String replaceWith = "<span>$1</span>";

aParagraph = aParagraph.replaceAll(phoneRegEx , replaceWith);

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Граница слова, \b, соответствует границе \w+.Вы можете просто удалить их:

String aParagraph = "start 201-555-1212 more (301)-777-1212 again (401) 888-1212 end";
String phoneRegEx = "(\\(?[1-9]{1}[0-9]{2}\\)?[- ]?[1-9]{1}[0-9]{2}-[0-9]{4})";
String replaceWith = "<span>$1</span>";

aParagraph = aParagraph.replaceAll(phoneRegEx, replaceWith);
0 голосов
/ 21 февраля 2012

Проблема заключается в использовании \b. Первым числом считается начало границы слова, а не (. Так что на самом деле это соответствует:

301)-777-1212

а не

(301)-777-1212

как вы и хотели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...