如何使用正则表达式检查Mysql的like输入?

如果要使用 regex 检查给定字符串是否是 MySQL "LIKE "输入模式,可以创建一个遵循 MySQL LIKE 语法的 regex 模式。MySQL LIKE 模式使用通配符"%"和"'',其中"%"代表零个或多个字符,"''代表单个字符。

下面是Python代码:

import re

def is_mysql_like_pattern(input_string):
    # Define a regex pattern for MySQL LIKE
    regex_pattern = re.compile(r'^[%_a-zA-Z0-9]+$')

    # Use the regex pattern to match the input string
    match = regex_pattern.match(input_string)

    # Check if the input string matches the MySQL LIKE pattern
    return bool(match)

# Example usage
input_string1 = "abc%"
input_string2 =
"def_"
input_string3 =
"gh(ijk)"
input_string4 =
"invalid@pattern"

print(is_mysql_like_pattern(input_string1))  # True
print(is_mysql_like_pattern(input_string2))  # True
print(is_mysql_like_pattern(input_string3))  # False
print(is_mysql_like_pattern(input_string4))  # False

在本例中,is_mysql_like_pattern 函数检查输入字符串是否遵循 MySQL LIKE 模式。regex 模式 r'^[%_a-zA-Z0-9]+$'确保输入字符串只包含 MySQL LIKE 模式的有效字符。

请根据具体要求或使用案例中的其他限制条件调整该模式。

Java代码
在 Java 中,您可以使用 java.util.regex 包中的 Pattern 和 Matcher 类来处理正则表达式。下面是一个如何使用 regex 检查给定字符串是否是 MySQL "LIKE "输入模式的示例:

import java.util.regex.*;

public class Main {
    public static void main(String args) {
        String inputString1 = "abc%";
        String inputString2 =
"def_";
        String inputString3 =
"gh(ijk)";
        String inputString4 =
"invalid@pattern";

        System.out.println(isMySQLLikePattern(inputString1));  
// true
        System.out.println(isMySQLLikePattern(inputString2));  
// true
        System.out.println(isMySQLLikePattern(inputString3));  
// false
        System.out.println(isMySQLLikePattern(inputString4));  
// false
    }

    public static boolean isMySQLLikePattern(String inputString) {
       
// Define a regex pattern for MySQL LIKE 可包含汉字
        String regexPattern =
"^[\\%\\_a-zA-Z0-9\\u4e00-\\u9fa5]+$";
        
       
// Compile the regex pattern
        Pattern pattern = Pattern.compile(regexPattern);

       
// Create a matcher with the input string
        Matcher matcher = pattern.matcher(inputString);

       
// Check if the input string matches the MySQL LIKE pattern
        return matcher.matches();
    }
}

在这个 Java 示例中,isMySQLLikePattern 方法接收输入字符串,并使用 regex 模式"^[\\%\_a-zA-Z0-9]+$"检查字符串是否遵循 MySQL LIKE 模式。该模式确保输入字符串只包含 MySQL LIKE 模式的有效字符。

请记住,Java 使用双反斜线 (\\) 来转义字符串中的特殊字符。请根据具体要求调整模式。