Нужен шаблон, который позволяет буквенно-цифровой с 3 специальными символами -.пробельные - PullRequest
0 голосов
/ 06 сентября 2011

Мне нужно проверить поле адреса, которое может содержать буквенно-цифровые символы с -, . и пробелом. Первый символ не должен быть - или .. Повторные специальные символы (-- -. ..) также не допускаются. Я пробовал этот шаблон, но бесполезно

Pattern.compile("^[a-zA-Z0-9-\\.\\s]*$")

Пожалуйста, предоставьте мне шаблон, соответствующий подобным строкам A-133 Rock Appt.

Ответы [ 2 ]

3 голосов
/ 06 сентября 2011
^\w++(?:[.\s-](?![.\s-])|\w++)*$

делает это (удваивает обратную косую черту для использования в строке Java).

Объяснение:

^           # Start of string
\w++        # Match one or more alnum characters, possessively
(?:         # Match either
 [.\s-]     #  a single "special" character
 (?![.\s-]) #  aserting that it's really single
|           # or
 \w++       # one or more alnum characters, possessively
)*          # zero or more times
$           # End of string

Собственные квантификаторы (++) помочь регулярному выражению не работать быстрее, если строка не совпадает.

1 голос
/ 06 сентября 2011

Ответ 1 не верен, если подчеркивание также допускается.Регулярное выражение Ответа 1 также принимает:

_A-133 Rock Appt.

Если подчеркивание не разрешено, замените \w на [a-z0-9A-Z]

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