返回

正则表达式教程:匹配 ASCII 码表中的全部特殊字符

正则表达式

一、正则解释

正则表达式:/[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+/

元字符
[ 左方括号,表示字符范围的开始
\x 表示 Unicode 转义符
21 ASCII 码中感叹号(!)的十六进制代码
- 表示字符范围
2F ASCII 码中斜杠(/)的十六进制代码
3A ASCII 码中冒号(:)的十六进制代码
40 ASCII 码中 at 符号(@)的十六进制代码
5B ASCII 码中左方括号([)的十六进制代码
60 ASCII 码中反引号(`)的十六进制代码
7B ASCII 码中左大括号({)的十六进制代码
7E ASCII 码中波浪号(~)的十六进制代码
] 右方括号,表示字符范围的结束
+ 匹配一个或多个前面的表达式

二、使用场景

此正则表达式可用于检测和替换文本中的特殊字符,例如:

  • 清除输入表单中的非法字符
  • 从字符串中移除标点符号
  • 验证密码是否包含特殊字符

三、代码示例

JavaScript

const regex = /[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+/;
const text = "[,.,^,&3%";

console.log(regex.test(text)); // true

Java

import java.util.regex.Pattern;

public class SpecialChars {
    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+");
        String text = "[,.,^,&3%";

        System.out.println(pattern.matcher(text).find()); // true
    }
}

PHP

<?php

$regex = '/[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+/';
$text = "[,.,^,&3%";

if (preg_match($regex, $text)) {
    echo "匹配成功";
} else {
    echo "匹配失败";
}
?>

Python

import re

regex = r'[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]+'
text = "[,.,^,&3%"

if re.search(regex, text):
    print("匹配成功")
else:
    print("匹配失败")