Проверка строки Java только один алфавитно-цифровой с Regex - PullRequest
1 голос
/ 23 января 2012

Я хочу сделать проверку для строки, которая может содержать только буквенно-цифровой и только один специальный символ. Я пробовал с (\\W).{1,1}(\\w+).

Но это верно только тогда, когда я начинаю со специального символа. Но у меня может быть один специальный символ в любом месте строки.

Ответы [ 4 ]

1 голос
/ 23 января 2012

Используйте якоря ^ и $, чтобы дать указание механизму регулярных выражений начинать сопоставление с начала строки и прекращать сопоставление в конце строки, поэтому вы берете свое регулярное выражение:

^(\\W).{1,1}(\\w+)$

Пожалуйста, ознакомьтесь с этим Oracle (Java) учебником по регулярным выражениям.

1 голос
/ 23 января 2012

Попробуйте это регулярное выражение: \w*\W?\w* (строка Java: "\\w*\\W?\\w*")

Недостатком этого выражения является сопоставление строк нулевой длины. Если ваш ввод должен содержать только один специальный символ, удалите знак вопроса ? из выражения.

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

если я правильно понимаю ваше регулярное выражение, это может решить вашу проблему:

([\w]+)([^\w])([\w]+)
0 голосов
/ 23 января 2012

используйте matcher.find(), а не matcher.match(), найдите \\w и удалите плюс (+), потому что он будет соответствовать последовательности всех буквенно-цифровых символов в вашей строке. Если ваша строка содержит только их, ваше регулярное выражение будет соответствовать всей строке.

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