Проверка регулярных выражений работает только с одним персонажем - PullRequest
1 голос
/ 03 августа 2011

Я хочу проверить, свободен ли userInput от специальных символов, вот мой код:

public class ValidateHelper {

public boolean userInputContainsNoSpecialCharacters(String input){

        Pattern p = Pattern.compile("[a-zA-Z_0-9 ]");
        Matcher m = p.matcher(input);
        boolean b = m.matches();

        if (b)
            return true;
        else
            return false;
}

}

Это работает, если я наберу один символ в текстовом поле -> "a "в текстовом поле -> метод возвращает true" ab "в текстовом поле -> метод возвращает false.Может кто-нибудь помочь, пожалуйста?С наилучшими пожеланиями Даниил

Ответы [ 5 ]

3 голосов
/ 03 августа 2011

Изменить "[a-zA-Z_0-9 ]" на "[a-zA-Z_0-9 ]+"

Знак + соответствует «одному или нескольким» из этой группы.

3 голосов
/ 03 августа 2011

Pattern p = Pattern.compile("[a-zA-Z_0-9 ]+");

2 голосов
/ 03 августа 2011

Это потому, что вы используете класс символов []. Если вы хотите захватить ограниченное количество, любое количество или диапазон символов, вам необходимо изменить его.

[a-zA-Z_0-9 ]+ //1 or more characters
[a-zA-Z_0-9 ]{1,5} //1 - 5 characters
1 голос
/ 03 августа 2011

измените ваш шаблон с [a-zA-Z_0-9 ] на ^[a-zA-Z_0-9 ]*$ (для 0 или более действительных символов) или ^[a-zA-Z_0-9 ]+$, если вы хотите убедиться, что они вводят значение

A + обозначает 1 или более повторений.

A * обозначает 0 или более повторений.

^ и $ обозначают начальный конец строки соответственно.

1 голос
/ 03 августа 2011

Вы должны использовать следующее регулярное выражение:

[A-Za-z0-9]+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...