java语言通过正则表达式校验传入的字符串中是否包含sql语句
时间: 2023-10-15 12:03:54 浏览: 46
可以使用正则表达式来检查传入的字符串中是否包含 SQL 语句。以下是一些示例:
1. 检查是否包含 SELECT 语句:
```java
String regex = "(?i)\\bSELECT\\b";
String input = "SELECT * FROM users";
if (input.matches(regex)) {
// 包含 SELECT 语句
} else {
// 不包含 SELECT 语句
}
```
2. 检查是否包含 UPDATE 语句:
```java
String regex = "(?i)\\bUPDATE\\b";
String input = "UPDATE users SET name='John'";
if (input.matches(regex)) {
// 包含 UPDATE 语句
} else {
// 不包含 UPDATE 语句
}
```
3. 检查是否包含 DROP 语句:
```java
String regex = "(?i)\\bDROP\\b";
String input = "DROP TABLE users";
if (input.matches(regex)) {
// 包含 DROP 语句
} else {
// 不包含 DROP 语句
}
```
注意:这只是一种简单的检查方式,不能完全防止 SQL 注入攻击。最好的防御方法是使用参数化查询。
相关问题
java通过正则表达式 校验 字符串
Java 中可以使用正则表达式进行字符串校验,可以使用 java.util.regex 包中的类来实现。
以下是一个简单的例子,用于匹配一个字符串是否为数字:
```java
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String input = "1234";
String pattern = "\\d+"; // 匹配一个或多个数字
if (Pattern.matches(pattern, input)) {
System.out.println("输入的字符串是数字");
} else {
System.out.println("输入的字符串不是数字");
}
}
}
```
这里使用了 `Pattern.matches()` 方法来执行正则表达式匹配,如果匹配成功则返回 true,否则返回 false。在上面的示例中,正则表达式 `\d+` 匹配一个或多个数字,如果输入的字符串只包含数字,则匹配成功。
你也可以使用其他的正则表达式来校验其他类型的字符串,例如邮箱、电话号码等。需要注意的是,正则表达式并不是万能的,对于一些特殊情况可能会出现误判或漏判,需要根据具体的场景进行优化。
Java 使用正则表达式 校验 日期字符串
可以使用正则表达式来校验日期字符串,以下是一个简单的 Java 代码示例:
```java
import java.util.regex.Pattern;
public class DateValidator {
private static final String DATE_PATTERN =
"^\\d{4}-\\d{2}-\\d{2}$";
public static boolean validate(String date) {
return Pattern.matches(DATE_PATTERN, date);
}
}
```
上述代码中,我们定义了一个常量 `DATE_PATTERN`,它是一个正则表达式,用于匹配 yyyy-MM-dd 格式的日期字符串。然后我们编写了一个 `validate()` 方法,该方法接受一个日期字符串作为参数,使用 `Pattern.matches()` 方法来判断该字符串是否符合指定的日期格式。
你可以在自己的代码中使用这个 `DateValidator` 类来校验日期字符串。例如:
```java
String dateStr = "2022-01-01";
if (DateValidator.validate(dateStr)) {
System.out.println("日期格式正确");
} else {
System.out.println("日期格式不正确");
}
```
输出:
```
日期格式正确
```