如何修改现有正则,使其匹配4位数字末尾指定3位数字的任意排列
正则修改方案
第一款:匹配末三位为5、5、6任意排列的4位数字
- 原正则:
\b(?=[0-46-9]*5[0-46-9]*5[0-46-9]*\b)(?=\d{3})\d*6\d*\b - 匹配规则:仅匹配4位纯数字,第一位可取值0-9任意值,末三位由2个5和1个6任意排列组成
- 修改后正则:
\b\d(?=(?:[0-46-9]*5){2})(?=[0-57-9]*6)\d{3}\b - 匹配示例:0556、0565、0655、1556、1565、1655等
第二款:匹配末三位为5、6、7任意排列的4位数字
- 原正则:
\b(?=[0-46-9]*5)(?=[0-57-9]*6)(?=[0-689]*7)\d+\b - 匹配规则:仅匹配4位纯数字,第一位可取值0-9任意值,末三位由5、6、7各1个任意排列组成
- 修改后正则:
\b\d(?=[0-46-9]*5)(?=[0-57-9]*6)(?=[0-689]*7)\d{3}\b - 匹配示例:7756、7765、8567、8576、8657、8675、8756、8765等
逻辑说明
- 开头
\b匹配单词边界,避免误匹配更长数字串的中间片段 - 首位
\d匹配4位数字的第一位,覆盖0-9所有取值 - 中间正向断言仅校验后三位的数字组成规则,和原有正则的校验逻辑完全兼容
- 末尾
\d{3}\b限定总长度固定为4位,符合需求
内容的提问来源于stack exchange,提问作者rj2372
相关产品推荐
相关产品推荐

