如何修改正则表达式,仅匹配以特殊字符开头的数字及对应前置特殊字符
正则调整方案
原有正则问题排查
你当前使用的[\/\*+-]*[\d]不符合需求的核心原因有两个:
[\/\*+-]后接的*量词代表0次或多次匹配,这就导致即使没有对应前缀特殊字符,也能单独匹配到数字- 末尾的
[\d]仅匹配单个数字,无法覆盖两位及以上的多位数场景
调整后正则
通用场景直接使用:[\/\*+-]\d+
规则说明
[\/\*+-]:严格匹配1次你指定的/、*、+、-四个特殊字符之一,确保匹配结果一定携带指定前缀\d+:匹配1个及以上的连续数字,可覆盖1位、多位数字场景
如果你的业务场景允许数字前存在多个连续的指定特殊字符,可以把正则调整为[\/\*+-]+\d+
匹配效果验证
针对你提供的测试字符串:
10ADJLegYld10/100+ ADJBoneYld*12+ ADJBoneYld+1ADJBoneYld-12
最终匹配结果为:/100、*12、+1、-12,完全符合你“只匹配带指定特殊字符前缀的数字、不匹配无前缀数字”的要求。
内容的提问来源于stack exchange,提问作者CorrieJanse
相关产品推荐
相关产品推荐

