插件窝 干货文章 如何用正则表达式阻止输入双引号、反斜杠、Emoji表情、空行和空格?

如何用正则表达式阻止输入双引号、反斜杠、Emoji表情、空行和空格?

字符 正则 表达式 Emoji 749    来源:    2025-03-25

使用正则表达式阻止特定字符输入

要阻止双引号(")、反斜杠(\)、Emoji表情、空行和空格,可以使用以下正则表达式:

^[^"\\\s\p{Emoji}]+$

正则表达式解释

  • ^ - 匹配字符串开头
  • [^...] - 否定字符类,匹配不在括号内的任何字符
    • " - 双引号
    • \\ - 反斜杠(需要转义)
    • \s - 任何空白字符(包括空格、制表符、换行符等)
    • \p{Emoji} - Unicode Emoji字符
  • + - 匹配前面的元素一次或多次
  • $ - 匹配字符串结尾

在不同编程语言中的使用示例

JavaScript

const regex = /^[^"\\\s\p{Emoji}]+$/u;
if (!regex.test(inputString)) {
  alert("输入包含非法字符");
}

Python

import re
regex = r'^[^"\\\s\p{Emoji}]+$'
if not re.fullmatch(regex, input_string, flags=re.UNICODE):
    print("输入包含非法字符")

Java

String regex = "^[^\"\\\\\\s\\p{Emoji}]+$";
if (!inputString.matches(regex)) {
    System.out.println("输入包含非法字符");
}

注意事项

  1. 确保使用支持Unicode的正则表达式引擎(大多数现代语言都支持)
  2. 在JavaScript中需要使用u标志来启用Unicode支持
  3. 这个正则表达式会拒绝任何包含这些字符的字符串,包括纯空格的字符串
  4. 如果需要允许某些特殊情况(如允许空格但不允许其他空白字符),可以调整正则表达式

替代方案

如果只需要阻止特定字符而不需要复杂匹配,也可以使用更简单的检查:

function isValidInput(input) {
  return !/["\\\s]|\p{Emoji}/u.test(input);
}