You need to enable JavaScript to run this app. ExtJS表单TextField提交值时如何在每个*前插入.符号
优惠活动
大模型
产品
解决方案
定价
更多

ExtJS表单TextField提交值时如何在每个*前插入.符号

问题根因

当前实现的逻辑存在明显偏差,完全没有匹配“每个*前插入.符号”的需求:

  • 代码仅做了固定的截取操作:检测到字符串含*时,直接切掉最后1位字符,末尾拼接.*返回
  • 全程没有定位字符串中开头、中间位置的符号做单独处理,所以输入*test*时,代码会先把末尾的切掉得到*test,再拼接.*得到错误结果*test.*,完全遗漏了开头位置的*
正确实现方案

无需做复杂的字符串遍历、裁剪逻辑,直接通过全局正则替换就能覆盖所有场景:匹配字符串中每一个出现的*,将其替换为.*,等价于在每个*前插入.符号。
重写后的TextField组件核心配置如下:

{
  fieldLabel: 'name',
  name: 'name',
  submitValue: true,
  enableKeyEvents: true,      
  getSubmitValue: function () {
    const originValue = this.getValue() || '';
    // 全局匹配所有*,替换为.*完成插入操作
    return originValue.replace(/\*/g, '.*');
  }
}
实际效果校验

替换逻辑可覆盖所有测试场景:

  • 输入*test*:两处分别替换为.,最终提交值为.*test.*,符合预期
  • 输入*t*st*:三处*全部完成替换,最终提交值为.*t.*st.*,匹配要求
  • 兼容连续*场景,比如输入x**y,提交值为x.*.*y,不会出现特殊字符漏处理的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 02:45:03