3 回答
TA贡献1805条经验 获得超9个赞
这是给你的一个例子!(2\d{3}|3000)[A-z](?:0[1-9]|[1-4]\d|50)
这应该只匹配您正在寻找的字符串,并且我发送的 regex101 的链接对构成正则表达式的所有单个部分进行了详细说明。
https://regex101.com/r/eq4SyY/2/
TA贡献1829条经验 获得超7个赞
这是实现这一点的正则表达式和内置语言实用程序的组合;以干净易读的方式:)
function isValid (str){
if(str.length != 7) return false
let fourDigits = parseInt(str.slice(0,4))
if(!(fourDigits >= 2000 && fourDigits <= 3000)) return false;
let isCapitalLetter = /[A-Z]/.test(str.slice(4, 5));
if (!isCapitalLetter) return false;
let twoDigits = parseInt(str.slice(5, 7));
if (!(twoDigits >= 1 && twoDigits <= 50)) return false;
return true
}
以下是一些示例测试用例:
function isValid (str){
if(str.length != 7) return false
let fourDigits = parseInt(str.slice(0,4))
if(!(fourDigits >= 2000 && fourDigits <= 3000)) return false;
let isCapitalLetter = /[A-Z]/.test(str.slice(4, 5));
if (!isCapitalLetter) return false;
let twoDigits = parseInt(str.slice(5, 7));
if (!(twoDigits >= 1 && twoDigits <= 50)) return false;
return true
}
console.log("2199R12", isValid("2199R12"));
console.log("3000B01", isValid("3000B01"));
console.log("4199R12", isValid("4199R12"));
console.log("2889x12", isValid("2889x12"));
console.log("2889A77", isValid("2889A77"));
console.log("2g99S12", isValid("2g99S12"));
添加回答
举报