如何编写匹配多组1-999x1-999格式且末尾无逗号的正则表达式
正则匹配方案
修正后的正则表达式
^[1-9]\d{0,2}x[1-9]\d{0,2}(?:,\s*[1-9]\d{0,2}x[1-9]\d{0,2})*$
规则拆解说明
^匹配字符串开头,避免前缀存在非法字符[1-9]\d{0,2}匹配1-999范围内的正整数:首位固定为1-9,后续最多跟随2位0-9的数字x匹配商品ID和购买数量之间的固定分隔符(?:,\s*[1-9]\d{0,2}x[1-9]\d{0,2})*非捕获组,匹配0次或多次的「逗号+可选空白+合法订单组」结构,既支持多组订单拼接,也保证不会在末尾残留逗号$匹配字符串结尾,避免后缀存在非法字符
验证效果
可正常匹配的合法输入
1x12x1,3x11x3, 4x1
会被拦截的非法输入
- 末尾带逗号的
1x1, - 组格式错误的
1,1, 1x1, - 数字超出999范围的
9999x1、1x1,99999x1 - 空串
内容的提问来源于stack exchange,提问作者RandomOverflow
相关产品推荐
相关产品推荐

