我要创建一个禁用数据库创建的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());
答案 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字符串。