You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

反转含数字单词且保留空格标点的JS代码问题排查

问题原因

当前代码的正则匹配规则不符合需求:

  • 现有正则/[a-z]+/ig仅匹配连续的纯英文字母序列,数字被判定为和空格、标点同类的分隔符,不会被纳入待反转的单词片段。
  • 处理测试用例里的2b片段时,只会匹配到其中的字母b做反转(单个字符反转后无变化),数字2被留在原位,最终这部分输出还是2b,达不到预期的b2效果。
修改方法

只需要调整正则的匹配范围,将数字也纳入待匹配的单词字符集合,让连续的字母+数字片段作为整体参与反转即可,修改后完整代码如下:

function reverseWords(str) {
  return str.replace(/[a-z0-9]+/ig, function(w){
    return w.split('').reverse().join('')
  });
} 

console.log(reverseWords('Stri_ng;-%   2b$#e reversed'));
// 运行输出:irtS_gn;-%   b2$#e desrever,和预期结果完全一致

修改后的逻辑说明:

  • 所有连续的字母、数字组合会被识别为需要反转的片段,整体做字符倒序
  • 下划线、标点、空格不属于匹配范围,会完全保留原有位置和顺序,不会被改动
  • 针对测试用例的处理过程:
    • Stri倒序为irtS,下划线原样保留,ng倒序为gn
    • 非匹配片段;-% 完全保留
    • 2b作为连续字母数字块整体倒序为b2,非匹配片段$#原样保留,单独字符e倒序后仍为e
    • 空格原样保留,reversed倒序为desrever

内容的提问来源于stack exchange,提问作者Sun Hwang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:54:31