如何移除JSON指定字段值的多余空格?正则表达式优化求助
解决思路:移除JSON指定字段值中的空格
方法一:解析JSON为对象处理(推荐)
这种方法逻辑清晰,避免了正则处理JSON的潜在风险(比如值含转义字符的情况),是更稳妥的方案:
- 将JSON字符串解析为对象
- 遍历目标字段(AUT、COR、RES、SUP),移除字段值内的所有空格
- 再将处理后的对象转回JSON字符串
示例代码(JavaScript):
const jsonStr = '{"main":{"sem":"segon semestre","year":"2021","AUT":"admin ","RES":"manel , admin ,lectura ","SUP":"kiloton ","COR":" ","fitx":"continguts"}}'; const data = JSON.parse(jsonStr); const targetFields = ['AUT', 'COR', 'RES', 'SUP']; targetFields.forEach(field => { if (data.main[field]) { // 移除值中所有空格 data.main[field] = data.main[field].replace(/\s/g, ''); } }); const cleanedJson = JSON.stringify(data); console.log(cleanedJson);
处理后RES字段值会变为"manel,admin,lectura",其他指定字段的空格也会被完全移除。
方法二:修正正则表达式处理
你原正则的问题是仅捕获了值的部分内容,无法覆盖RES字段里的多段内容。可以通过捕获整个字段值再移除空格的方式解决:
示例代码(JavaScript):
const jsonStr = '{"main":{"sem":"segon semestre","year":"2021","AUT":"admin ","RES":"manel , admin ,lectura ","SUP":"kiloton ","COR":" ","fitx":"continguts"}}'; const cleanedJson = jsonStr.replace(/"(AUT|COR|RES|SUP)":"([^"]*)"/g, (match, key, value) => { const cleanedValue = value.replace(/\s/g, ''); return `"${key}":"${cleanedValue}"`; }); console.log(cleanedJson);
正则说明:
"AUT|COR|RES|SUP":匹配指定的字段键"([^"]*)":捕获字段的完整值(直到下一个双引号)- 替换时对捕获到的
value执行空格移除操作,再拼接回键值对格式
注意
正则处理JSON仅适用于结构简单、值中无转义双引号的场景。如果JSON存在复杂嵌套或特殊字符,优先使用解析对象的方法。
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

