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’);

posted @ 2025-03-05 17:17  jio-deng  阅读(107)  评论(0)    收藏  举报  来源