以特定字母结尾的 n 位数字的正则表达式

Regex for a n digit number that ends with a particular letter

如何提取:

  1. 一个以字母结尾(比如 "A")的 n 位数字(比如 10)的字符串,例如:4024204455A
  2. 12位数字,例如:192345006905

使用来自多个文本文件的正则表达式和 Go (golang)?

<?php
$input = array();
$input[] = '123456789000A';
$input[] = '123456789012';
$input[] = '12345678901';

foreach($input as $i)
{
    preg_match("/^([0-9]+[a-z]{1}|[0-9]{12})$/i", $i, $m);
    print_r($m);
}

输出:第一次匹配,第二次匹配,第三次不匹配

Array
(
    [0] => 123456789000A
    [1] => 123456789000A
)
Array
(
    [0] => 123456789012
    [1] => 123456789012
)
Array
(
)

您可以在非捕获组 (?: 中使用 or | 匹配 12 位数字 [0-9]{12} 或 10 位数字和一个大写字符 [0-9]{10}[A-Z] 例如:

^(?:[0-9]{12}|[0-9]{10}[A-Z])$

或者在单词边界之间匹配您的值 \b:

\b(?:[0-9]{12}|[0-9]{10}[A-Z])\b

要匹配一位或多位数字或 10 位数字后跟一个大写字符,您可以将此正则表达式用于单词边界或锚定 $^:

\b(?:[0-9]+|[0-9]{10}[A-Z])\b