验证字符串格式

新手上路,请多包涵

我有一个字符串的不同格式列表。当一个字符串产生一串东西时,用户必须键入该特定字符串的格式。

如果给定的字符串是

A-01-13A

(一个字母,后跟破折号,两个数字,后跟破折号,两个数字,一个字母)

或者

A-01-13

(一个字母,后跟破折号,两个数字,后跟破折号,两个数字)


用户的键入字符串在下面 验证

B-13-99

B-14-11A

以下未 验证 用户的键入字符串:

B-13-100


使用 Regex 或 Javascript 中的其他方法验证给定字符串的最佳方法是什么?

原文由 Abel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 619
2 个回答

只需使用简单的正则表达式:

 const userKeyRegExp = /^[A-Z]\-[0-9]{2}\-[0-9]{2}[A-Z]?$/;

const valid = userKeyRegExp.test('A-01-13A');

console.log(valid);

原文由 Damaged Organic 发布,翻译遵循 CC BY-SA 3.0 许可协议

您要查找的 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);
}

原文由 nitobuendia 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题