正则提取div内容出现字符丢失,如何还原被转义的字符?
问题解决思路
问题根源
你遇到的问题本质是JavaScript字符串的转义规则导致的:在字符串字面量里,\f是一个特殊转义序列,会被解析为换页控制字符(不可见),所以你的原始字符串'<div>\frac{5}{6}</div>'实际存储的内容是<div>rac{5}{6}</div>(中间的空白就是换页符),正则提取时自然会把这个不可见字符忽略,剩下rac{5}{6}。
解决方案
修正字符串字面量写法
如果是直接在代码里定义字符串,需要把反斜杠转义(用两个反斜杠\\表示一个实际的\):var text = '<div>\\frac{5}{6}</div>'; var inBetween = text.replace(/<div>(.*?)<\/div>/g,'$1'); console.log(inBetween); // 输出:\frac{5}{6}外部字符串的转义处理
如果这个字符串是从外部(比如接口返回、文件读取)获取的,要确保数据源传递时保留了原始的\,避免被提前转义。一旦\f被解析成换页符,就无法再还原出原始的\frac了——因为转义后的控制字符已经丢失了\和f的原始信息。
内容的提问来源于stack exchange,提问作者Fodder
相关产品推荐
相关产品推荐

