我有一个字符串的不同格式列表。当字符串产生某个字符串时,用户必须键入该特定字符串的格式。
如果给定的字符串是
A-01-13A
(一个字母表,后跟短划线,两个数字,后跟破折号,两个数字和一个字母表)
或
A-01-13
(一个字母表,后跟短划线,两个数字,后跟短划线,两个数字)
用户的键入字符串在已验证下方:
B-13-99
B-14-11A
用户的键入字符串未经过验证:
B-13-100
使用Regex或Javascript中的其他方法验证给定字符串的最佳方法是什么?
答案 0 :(得分:2)
只需使用简单的正则表达式:
const userKeyRegExp = /^[A-Z]\-[0-9]{2}\-[0-9]{2}[A-Z]?$/;
const valid = userKeyRegExp.test('A-01-13A');
console.log(valid);
答案 1 :(得分:1)
您正在寻找的RegExp表达式是:
^([a-zA-Z]{1}-[0-9]{2}-[0-9]{2}[a-zA-Z]{0,1})$
这意味着: 以一个字符开头,后跟一个短划线,后跟两个数字,后跟一个破折号,后跟两个数字,两个数字结束,一个或没有字符。
您可以在Regex101中使用它,或者您可以使用Javascript,如下所示:
/** @const {!RegExp} Code pattern to validate. */
const CODE_PATTERN = /^([a-zA-Z]{1}-[0-9]{2}-[0-9]{2}[a-zA-Z]{0,1})$/;
/**
* Validate that a certain code matches expected RegExp.
* Uses CODE_PATTERN to validate.
* @param {string} code - Code to be validated.
* @return {bool} Whether provided code matches pattern.
*/
const validateCode = function(code) {
return CODE_PATTERN.test(code);
};
// Test sample of codes.
const testCodes = [
'A-01-13A',
'A-01-13',
'B-13-99',
'B-14-11A',
'B-13-100'
];
for (code of testCodes) {
const isValidCode = validateCode(code);
console.log(isValidCode);
}
答案 2 :(得分:0)
你可以通过以下方式完成
function validate(str){
return str.match(/^[A-Z]-\d{2}-\d{2}[A-Z]?$/) !== null;
}
console.log(validate('A-01-13A'));
console.log(validate('A-01-13'));
console.log(validate('B-13-99'));
console.log(validate('B-14-11A'));
console.log(validate('B-13-100'));