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

Dart正则表达式:如何精准匹配特定number模式并排除误匹配

Dart正则表达式匹配指定场景的解决方案

问题分析

你需要匹配三类字符串:

  • 精确等于number的字符串
  • number前后带有下划线的字符串(如hey_number、number_hey、hey_number_hey)
  • 需排除hey_numbers、hey_numberrr这类number后接其他字符的情况

原正则(^number$)|(.*[_]{1}number.*)|(.*number[_]{1}.*)的问题在于:.*[_]number.*会无限制匹配number之后的任意字符,导致hey_numbers这类字符串被误匹配。

正确正则表达式

使用带边界限制的正则,确保number的前后只能是下划线或字符串首尾:

RegExp validNumberPattern = RegExp(r'^(?:number|.*_number(?=_|$)|(?<=^|_)number.*)$');

正则拆解

  • ^/$:匹配字符串的开头和结尾,确保整串匹配
  • (?:...):非捕获分组,用于整合匹配规则
  • number:精确匹配整个字符串为number的情况
  • .*_number(?=_|$):匹配任意字符后接_number,且number之后必须是下划线或字符串结尾(通过正向预查(?=_|$)限制,避免number后接其他字符)
  • (?<=^|_)number.*:匹配number之前是字符串开头或下划线,之后接任意字符(通过反向预查(?<=^|_)限制,避免number前接非下划线字符)

测试验证

  • 匹配成功的案例:number、hey_number、number_hey、hey_number_hey
  • 匹配失败的案例:hey_numbers、hey_numberrr、xnumber、numberx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:15:47