资产编号正则匹配问题求助:SOT开头格式验证失败
资产编号验证问题排查与修复
你的两个资产编号正则表达式本身是有效的:
- 格式1(P开头):
/^P[0-7]-[A-Z]{2,3}-\d{5}$/(可简化原表达式的冗余语法,不影响验证效果) - 格式2(SOT开头):
/^SOT-[A-Z]{2,3}-\d{5}$/
报错的核心原因是JS验证逻辑的判断条件错误:
原代码使用!match1 || !match2,这个逻辑会导致只要不满足其中一种格式就触发错误提示——比如输入符合格式2的编号时,match1为false,!match1为true,直接触发||分支的错误,造成误判。
正确的逻辑应该是当两种格式都不满足时才报错,即把判断条件改为!match1 && !match2。
修正后的验证代码示例
function validateAssetNumber(assetNumber) { // 格式1:P+0-7数字 + 2-3大写字母 + 5位数字 const pattern1 = /^P[0-7]-[A-Z]{2,3}-\d{5}$/; // 格式2:SOT + 2-3大写字母 + 5位数字 const pattern2 = /^SOT-[A-Z]{2,3}-\d{5}$/; const isMatchPattern1 = pattern1.test(assetNumber); const isMatchPattern2 = pattern2.test(assetNumber); if (!isMatchPattern1 && !isMatchPattern2) { return "pattern does not match"; } return "valid asset number"; }
内容的提问来源于stack exchange,提问作者Kenlymar Paredes
相关产品推荐
相关产品推荐

