ArkTs-正则匹配空格
在ArkTS中若要匹配转码后的空格形式(如URL编码、HTML实体等) 和原生空格字符,需要构建复合正则表达式。以下是增强版实现方案:
// 包含原生空格和多种转码空格的测试字符串
let encodedStr = "原始空格 url%20空格+号 html 实体  转义\\u0020";
// 创建综合匹配正则表达式
const encodedSpaceRegex = /(%20|\+|\ |&\#32;|&\#x20;|\\u00{0,1}20|[\s\u00A0\u3000])/gi;
// 方法1:查找所有类型的空格
let encodedMatches = encodedStr.match(encodedSpaceRegex);
console.log("复合匹配结果:", encodedMatches);
/* 输出:[ " ",
// 原始空格 "%20",
// URL编码 "+",
// URL查询参数形式 " ",
// HTML实体 " ",
// 十进制实体 " ",
// 十六进制实体 "\\u0020"
// Unicode转义]*/
// 方法2:统一替换处理
let cleanStr = encodedStr.replace(encodedSpaceRegex, "[SPACE]");
console.log("替换后:", cleanStr);
// 输出:原始[SPACE]url[SPACE]空格[SPACE]号html[SPACE]实体[SPACE][SPACE]转义[SPACE]
正则表达式解析:
/(%20| // URL编码空格
\+| // URL查询参数中的+号空格
\ | // HTML不间断空格实体
&\#32;| // 十进制HTML实体
&\#x20;| // 十六进制HTML实体
\\u00{0,1}20| // JavaScript风格Unicode转义(\u0020或\u20)
[\s\u00A0\u3000] // 原生空格及特殊Unicode空格
)/gi
关键功能说明:
1. 多编码兼容:
- 覆盖URL编码(%20)、查询参数空格(+)
- 支持HTML实体( )
- 识别JavaScript转义(\u0020或简写\u20)
2. 混合处理能力:
// 可同时处理原始空格和编码后的复合字符串
"Hello%20World\u0020测试 ".replace(encodedSpaceRegex, "_")
// 输出:Hello_World_测试_
3. 扩展建议:
- 如需匹配零宽空格\u200B,在字符组添加\u200B
- 若要匹配Mongolian元音分隔符\u180E,扩展正则表达式
应用场景:
- API数据处理:清洗URL参数中的空格编码
- 爬虫系统:处理HTML中混杂的空格表现形式
- 富文本编辑器:统一不同来源的空格格式
- 日志分析:解析含有多重编码的文本数据
注意事项:
1. 正则中的gi标志确保:
- g:全局匹配
- i:忽略大小写(匹配 %20等变体)
2. 特殊字符转义:
- 正则中的\u需写成\u
- +号在正则中有特殊含义,需用+或[+]
3. 性能优化:对于高频操作场景,建议预编译正则表达式
const precompiledRegex = newRegExp(‘(%20|\+| |…)’, ‘gi’);

浙公网安备 33010602011771号