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

TypeScript如何从patient前缀字符串中提取指定数字(如1075)

解决方案

针对你的需求,要从patient[数字]格式的字符串中提取patient后的数字(比如1075),你原来的replace(/\D/g,'')会移除所有非数字内容,如果字符串里还有其他数字(比如示例中的0944713415),就会把所有数字拼接在一起,导致结果不符合预期。推荐用以下两种更精准的方法:

方法一:正则匹配(推荐,鲁棒性强)

使用正则表达式专门捕获patient后面的连续数字,不管字符串后面有没有其他内容,都能精准提取目标数字:

const d = decrypt(t);
console.log('after decrypt: ', d);
// 匹配patient开头,捕获后面的连续数字
const matchResult = d.match(/patient(\d+)/);
if (matchResult) {
  const patientId = matchResult[1]; // 这里得到的就是1075
  console.log('提取到的患者ID:', patientId);
  // 在这里将patientId传递给后端API
} else {
  console.log('未匹配到符合格式的患者ID');
}

说明

  • /patient(\d+)/ 正则的含义:匹配以patient开头的字符串,(\d+)捕获后面的1个或多个数字,捕获到的内容会存在匹配结果的第1个索引位置(matchResult[1])。
  • 即使解密后的字符串是patient1075 0944713415这种包含其他数字的格式,也只会提取patient后面的1075,不会受后面数字的干扰。

方法二:字符串截取(仅适用于格式固定的场景)

如果确定解密后的字符串严格是patient+数字的格式(没有其他额外字符),可以直接截取字符串:

const d = decrypt(t);
console.log('after decrypt: ', d);
// patient是7个字符,从索引7开始截取后面的内容
const patientId = d.slice(7);
console.log('提取到的患者ID:', patientId);
// 传递给后端API

说明

  • 这个方法依赖字符串格式完全固定,如果patient拼写变化或者前面有其他字符,结果就会出错,所以仅推荐在格式绝对可控的场景下使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 10:40:35