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

如何编写匹配两位数字后非'k'或' k'的正则表达式?

解决两位数字后排除'k'/' k'的正则匹配问题

你需要用负向先行断言来实现这个需求,直接排除两位数字后紧跟'k'或' k'的情况。正确的正则表达式如下:

^\d{2}(?!\s?k)(.*)?$

各部分解释:

  • ^\d{2}:从字符串开头匹配两位数字,避免误匹配字符串中间的两位数字(比如'abc10k'里的10不会被选中)
  • (?!\s?k):核心的负向断言,意思是「当前位置之后,不能出现0个或1个空格加k」,刚好覆盖你要排除的'10k'和'10 k'两种情况
  • (.*)?:可选的后续任意内容,用来匹配像'10 a'这种数字后有其他字符的情况;$确保匹配到字符串结尾,避免边界遗漏

验证你的示例:

  • '10' → 匹配(数字后无内容,断言条件满足)
  • '10 a' → 匹配(数字后是空格+a,不是空格+k,断言条件满足)
  • '10 k' → 不匹配(数字后是空格+k,断言触发排除)
  • '10k' → 不匹配(数字后直接是k,断言触发排除)

你之前写的[0-9]{2}(^k| k)逻辑完全反了:这个表达式是要求两位数字后面必须跟着行首的k或者空格k,和你要的「排除这些情况」正好相反,而且^k里的^是行首锚点,在这里用错了位置,所以得不到预期结果。

内容的提问来源于stack exchange,提问作者jubiya.joy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:35:23