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

如何编写正则表达式:下划线后为字母数字混合时取其前内容,否则全匹配

正则表达式匹配需求与解决方案

原始输入字符串

ab_cd
ef_gh_ij
kl_mn_op_qr
st_uv_1w2x
yz_ab_cd_e1f2

匹配需求

匹配每个字符串中最后一个下划线(_)之前的子串(不包含下划线),但仅当该下划线后跟随的是同时包含字母和数字的字母数字序列时;否则直接匹配整个字符串。

预期匹配结果

ab_cd
ef_gh_ij
kl_mn_op_qr
st_uv
yz_ab_cd

当前问题

使用正则表达式 ^.*(?=_)[a-zA-z]+ 无法满足需求:对于下划线后为字母数字混合的情况,该表达式会错误匹配下划线本身及后续一个字符。

解决方案

可以使用以下正则表达式实现需求:

^(.*)(?=_(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+)$|^.*$

表达式解释

  • 第一部分 ^(.*)(?=_(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+)$:
    • (?=_(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+) 是正向预查,用于验证字符串结尾是否存在一个下划线,且下划线后的字母数字序列同时包含至少一个字母和一个数字;
    • (.*) 捕获该下划线之前的所有内容作为匹配结果。
  • 第二部分 |^.*$:当字符串不满足上述条件时,直接匹配整个字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:12:51