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

JavaScript正则实现字符串末尾恰好单次匹配s或m字符的方法

正则匹配实现方案

匹配规则梳理

  • 字符串末尾必须为小写s或小写m
  • 末尾的s/m仅可出现1次,不允许连续的s/m结尾
  • 匹配区分大小写,末尾为大写S/M、其他任意字符均不符合要求
  • 规则校验用例:
    • 符合要求(返回true):121s、121m
    • 不符合要求(返回false):121ss、121ms、末尾为大写M/H等其他字符的字符串

原有写法问题

之前编写的/[mh]{1}$/存在两处错误:

  1. 字符集包含规则不要求匹配的h,遗漏了需要匹配的s
  2. 仅校验了最后1位字符,未约束倒数第二位不能是s/m,会导致121ss、121ms这类连续s/m结尾的字符串被误判通过

正确正则

通用版本(适配长度≥2的字符串)

/[^sm][sm]$/

兼容版本(额外支持长度为1的字符串,即内容为单独s/m的场景)

/(?:^|[^sm])[sm]$/

正则逻辑说明

  • [sm]$:锚定字符串末尾,要求最后一位必须是小写s或m,天然满足区分大小写、排除大写字符/其他字符的要求
  • [^sm]:要求倒数第二位字符不能是s或m,从根源避免末尾连续出现s/m的情况
  • 兼容版本中的(?:^|[^sm])表示匹配字符串开头,或者非s/m的字符,解决长度为1时不存在倒数第二位的匹配问题

用例校验结果

  • 121s:倒数第二位为非s/m的1,末位为s,匹配通过
  • 121m:倒数第二位为非s/m的1,末位为m,匹配通过
  • 121ss:倒数第二位为s,匹配失败
  • 121ms:倒数第二位为m,匹配失败
  • 121M/121H:末位不是小写s/m,匹配失败
  • 单独字符s/m:兼容版本可正常匹配通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:12:17