Имя базы данных Регулярное ограничение - PullRequest
0 голосов
/ 18 июля 2011

Я должен создать регулярное выражение Java, которое отключает создание баз данных.(Я соблюдаю следующие ограничения: http://dev.mysql.com/doc/refman/5.0/en/identifiers.html)

Может кто-нибудь помочь мне построить регулярное выражение с этим ограничением [0-9, az, AZ $ _]?

Это мой фрагмент:

    Pattern pattern = Pattern.compile("[0-9a-zA-Z$_]");
    Matcher matcher = pattern.matcher("userdatabase");
    System.out.println(matcher.matches());

Ответы [ 3 ]

1 голос
/ 18 июля 2011

Вы не указали квантификатор. Ваше выражение будет соответствовать только одному персонажу.

Попробуйте изменить его на:

Pattern pattern = Pattern.compile("[0-9a-zA-Z$_]+");

+ указывает, что выражения должны быть 1 или более раз.

0 голосов
/ 18 июля 2011

Я прочитал из контекста, который вы хотите избежать SQL-инъекций?если да, вы можете просто использовать подготовленные операторы вместо строк sql.

0 голосов
/ 18 июля 2011

Если вы имеете в виду регулярное выражение для 0-9a-zA-Z $ _, это просто:

    String string = "the input";
    String regularExpression = "^[0-9a-zA-Z$_]+$";
    Pattern pattern = Pattern.compile(regularExpression);
    Matcher matcher = pattern.matcher(string);
    System.out.println(matcher.matches());

Если вы имеете в виду, что не хотите выполнять команды "CREATE TABLE", вы можете проверитькак то так:

    String regularExpression = ".*create\stable.*";
    Pattern pattern = Pattern.compile(regularExpression, Pattern.CASE_INSENSITIVE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...