为何匹配[001-180]范围的Flex正则表达式无法正常工作?
解决Flex中匹配[001-180]范围的正则问题
你的原正则表达式存在覆盖不全或逻辑冗余的问题,以下分两种需求场景给出修正方案:
情况1:匹配所有数值1-180的输入(支持1/2/3位,允许前导零)
如果输入可以是1、10、010、180这类形式,原正则漏了1位和2位的合法数字,修正后的正则如下:
[1-9]|[1-9][0-9]|00[1-9]|0[1-9][0-9]|1[0-7][0-9]|180
拆分说明:
[1-9]:匹配1-9的1位数字[1-9][0-9]:匹配10-99的2位数字00[1-9]:匹配001-009的三位带前导零数字0[1-9][0-9]:匹配010-099的三位带前导零数字1[0-7][0-9]:匹配100-179的三位数字180:匹配180这个特定值
情况2:仅匹配三位数字的001-180
如果只需要匹配三位数字形式(如001、099、180),可以优化原正则的分支逻辑,让结构更清晰:
00[1-9]|0[1-9][0-9]|1[0-7][0-9]|180
这个正则完整覆盖001-099、100-179、180所有三位合法值,同时自动排除000这类非法输入。
在Flex中使用时,要确保该正则是对应token的优先匹配规则,避免其他宽泛的数字规则(如[0-9]+)提前拦截合法输入。
内容的提问来源于stack exchange,提问作者Sudipta Progga Islam
相关产品推荐
相关产品推荐

