Основанное на Java регулярное выражение, позволяющее использовать буквенно-цифровые символы и символы ', и - PullRequest
4 голосов
/ 14 июня 2011

Я новичок в регулярных выражениях в Java, и мне нужно проверить, есть ли в строке буквенно-цифровые символы, запятые, апострофы и точки с точкой (точки) Все остальное должно приравниваться к ложному.

Кто-нибудь может дать какие-нибудь указатели?

В данный момент у меня есть это, которое, как я считаю, содержит буквенно-цифровые символы для каждого символа в строке:

 Pattern p = Pattern.compile("^[a-zA-Z0-9_\\s]{1," + s.length() + "}");

Спасибо

Мистер Олбани Кэкстон

Ответы [ 3 ]

10 голосов
/ 14 июня 2011

Я новичок в регулярных выражениях в Java, и мне нужно проверить, есть ли строка буквенно-цифровых символов , запятых , апострофов и только полные остановки (периоды).

Я предлагаю вам использовать класс \p{Alnum} для сопоставления буквенно-цифровых символов:

Pattern p = Pattern.compile("[\\p{Alnum},.']*");

(я заметил, что вы включили \s в свой текущий шаблон. Если вы также хотите разрешить пробелы, просто добавьте \s в класс символов.)

Из документации Pattern:

[...]

\p{Alnum} Буквенно-цифровой символ: [\p{Alpha}\p{Digit}]

[...]


Вам не нужно включать ^ и {1, ...}.Просто используйте методы, такие как Matcher.matches или String.matches, чтобы соответствовать полному шаблону.

Также обратите внимание, что вам не нужно экранировать . внутри класса символов ([ ... ]).

1 голос
/ 14 июня 2011
Pattern p = Pattern.compile("^[a-zA-Z0-9_\\s\\.,]{1," + s.length() + "}$");
0 голосов
/ 14 июня 2011

Не усложняйте:

String x = "some string";
boolean matches = x.matches("^[\\w.,']*$");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...