Java регулярное выражение 0-9 и некоторые специальные символы - PullRequest
2 голосов
/ 11 января 2012

У меня возникли проблемы с написанием регулярных выражений для телефонных номеров.(пока не слишком хорошо) Число может содержать только: 0-9,+,/,.,-, ,(,) Я думал:

@Pattern(regexp = "(0-9+/\\.\\- \\(\\))?")

Но это уже жалуется, когда я просто ввожу 100.

Ответы [ 5 ]

3 голосов
/ 11 января 2012

Попробуйте это регулярное выражение [0-9\.\-\s+\/()]+

Но, согласно вашему объяснению и, таким образом, моему регулярному выражению, оно также позволило бы +++ или один пробел или что-то в этом роде, это то, что вы хотите?

РЕДАКТИРОВАТЬ: так что может быть лучше использовать следующее: ([\.\-\s+\/()]*[0-9][\.\-\s+\/()]*){8,15}

Для которого требуется как минимум 8-15 цифр и позволяет другим символам появляться между ними.

0 голосов
/ 11 января 2012

Правильный шаблон: ^[\d\/\(\)\- \.]+$

Разделив регулярное выражение, вы можете увидеть:

^    #Won't match if it doesn't start at the beginning
[    #The character can contain...
\d   #digits
\/   #slash
\(   #brackets (open)
\)   #brackets (close)
\-   #hyphen
     #space (\s is also possible but can be tab too)
\.   #or a dot
]
+   #The character can be repeated
$   #Won't match if it doesn't reach the end
0 голосов
/ 11 января 2012
@Pattern(regexp = "^[0-9+/. ()-]+$")
0 голосов
/ 11 января 2012

Я думаю, вы хотите "[-0-9+/. ()]+" - специальные символы внутри [] обрабатываются по-разному, и лучший способ справиться с - - это поставить его первым.

0 голосов
/ 11 января 2012

Вам необходимо создать класс символов, используя квадратные скобки вокруг.

[0-9+/. ()-]+

См. это выражение в Regexr

Это означает, что соответствует любому из символов извнутри класса один или несколько раз (из-за квантификатора + в конце)

Но это будет соответствовать этим символам в любом порядке, например, «.....» будетmatch.

Ваше регулярное выражение (0-9+/\\.\\- \\(\\))? ведет себя так:

Совпадение "0-", затем последовательность из девяток, за которой следует "/.- ()".Из-за ? после окружающих скобок весь шаблон является необязательным, то есть он также будет соответствовать пустой строке.

См. Ваше выражение на Regexr

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