求助:检测含HTML ASCII字符实体的字符串及转换正则方案
检测HTML ASCII字符实体的正则表达式及转换方法
一、检测用正则表达式
你之前尝试的正则都是匹配纯ASCII字符的逻辑,和检测HTML实体完全相反。要精准匹配&#数字;格式的ASCII字符实体,用以下正则即可:
&#\d+;
如果要严格限定是ASCII范围内的实体(数字在0-127之间),可以用更严谨的版本:
&#(?:0?[0-9]|[1-9][0-9]|1[01][0-9]|12[0-7]);
测试结果完全符合你的需求:
Miami, Florida→ 匹配(true)Miami, Florida→ 不匹配(false)Miami Florida→ 不匹配(false)Miami,Florida→ 不匹配(false)
二、实体转换方法
检测到实体后,要将&#数字;转为对应字符,核心逻辑是提取实体中的数字,再转成ASCII字符,以下是主流语言的实现示例:
JavaScript实现
const targetStr = "Miami, Florida"; const result = targetStr.replace(/&#(\d+);/g, (_, num) => String.fromCharCode(parseInt(num, 10))); // 输出结果:"Miami, Florida"
Python实现
import re target_str = "Miami, Florida" result = re.sub(r'&#(\d+);', lambda m: chr(int(m.group(1))), target_str) # 输出结果:"Miami, Florida"
内容的提问来源于stack exchange,提问作者NoobCoder
相关产品推荐
相关产品推荐

