前八个字母和最后一个数字的正则表达式

标签 regex numbers letter

请帮我编写一个有效的正则表达式。 条件:

  1. 最多可以有 9 个字符(从 1 到 9)。
  2. 前八个字符只能是大写字母。
  3. 最后字符只能是数字

例子:

不匹配:

  • S3
  • FT5
  • FGTU7
  • ERTYUOP9
  • ERTGHYUKM

对应于:

  • E
  • ERT
  • RTYUKL
  • VBNDEFRW3

我尝试使用以下方法:

^[A-Z]{1,8}\d{0,1}$

但在这种情况下,FT5 示例匹配,尽管它不应该匹配。

最佳答案

您可以使用基于交替的正则表达式:

^(?:[A-Z]{1,8}|[A-Z]{8}\d)$

RegEx Demo

正则表达式详细信息:

  • ^:开始
  • (?:: 启动非捕获组
    • [A-Z]{1,8}:匹配1到8个大写字母
    • |:或者
    • [A-Z]{8}\d:匹配8个大写字母后跟一个数字
  • ):结束非捕获组
  • $:结束

关于前八个字母和最后一个数字的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70185719/

相关文章:

javascript - HTML 表单编号类型唯一用户输入

javascript - 与 JS 中的 Number.toExponential 相反

php - 如何检查一个字符是字母还是数字?

Java - 按数字和字母分割字符串

javascript - 我如何检查子字符串是否与正则表达式匹配?

python - 在 python/numpy/scipy 中生成低差异准随机序列?

C,通过函数中的指针赋值的问题

regex - 如何 grep/perl/awk 重叠正则表达式

javascript - 正则表达式匹配任何长度超过 2 个字符的子字符串

java - 计算字母出现次数