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

JS如何提取字符串中数字后的末尾子串?

用正则表达式提取目标后缀的解决方案

当然可以!正则表达式正是处理这类结构化字符串提取需求的完美工具,完全不需要纠结字符串的总长度——我们只需要精准定位数字段之后的末尾字母部分就行。

核心思路

你的字符串结构是「3-4位字母 + 3-4位数字 + 2-3位目标字母」,所以我们只需要匹配到数字段的结束位置,然后捕获后面紧跟的2-3位字母即可。

推荐正则表达式

\d+([a-zA-Z]{2,3})$

各部分解释:

  • \d+:匹配一个或多个数字(刚好对应你的3-4位数字段)
  • ([a-zA-Z]{2,3}):捕获组,专门匹配2到3位大小写字母,这就是我们要提取的目标内容
  • $:锚定到字符串末尾,确保我们取的是最后一段字母,不会误匹配中间的内容

测试示例

针对你给出的几个例子,这个正则的表现如下:

  • 输入 "abc456mm" → 捕获结果:"mm"
  • 输入 "ucw501mrf" → 捕获结果:"mrf"
  • 输入 "ztui4001psl" → 捕获结果:"psl"

编程语言实现示例

Python

import re

def extract_target_suffix(input_str):
    # 匹配数字后的末尾2-3位字母
    match_result = re.search(r'\d+([a-zA-Z]{2,3})$', input_str)
    # 如果匹配成功返回捕获的内容,否则返回None
    return match_result.group(1) if match_result else None

# 测试用例
print(extract_target_suffix("abc456mm"))       # 输出: mm
print(extract_target_suffix("ucw501mrf"))      # 输出: mrf
print(extract_target_suffix("ztui4001psl"))    # 输出: psl

JavaScript

function extractTargetSuffix(inputStr) {
    const match = inputStr.match(/\d+([a-zA-Z]{2,3})$/);
    return match ? match[1] : null;
}

// 测试用例
console.log(extractTargetSuffix("abc456mm"));    // 输出: "mm"
console.log(extractTargetSuffix("ucw501mrf"));   // 输出: "mrf"
console.log(extractTargetSuffix("ztui4001psl")); // 输出: "psl"

进阶:严格匹配完整字符串结构

如果你需要确保整个字符串完全符合「3-4字母+3-4数字+2-3字母」的格式(避免匹配到不符合结构的字符串,比如中间夹杂其他字符的情况),可以使用更严格的正则:

^[a-zA-Z]{3,4}\d{3,4}([a-zA-Z]{2,3})$

这个正则会从字符串开头就开始匹配,确保每一段都符合长度要求,只有完全匹配的字符串才会返回目标后缀。

内容的提问来源于stack exchange,提问作者Morgan Le Floc'h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:01:59