数据库名称正则表达式限制

时间:2011-07-18 10:55:19

标签: java regex database

我要创建一个禁用数据库创建的java正则表达式。 (我遵循这些限制:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

任何人都可以帮我构建一个具有此限制的正则表达式[0-9,a-z,A-Z $ _]吗?

这是我的代码:

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

3 个答案:

答案 0 :(得分:1)

您没有指定量词。您的表达式只匹配一个字符。

尝试将其更改为:

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

+表示该表达式应该是1次或更多次。

答案 1 :(得分:0)

如果你的意思是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);

答案 2 :(得分:0)

我读出了你想避免SQL注入的上下文? 如果是,您可以简单地使用prepared statements而不是sql字符串。