3

我正在尝试创建一个正则表达式来验证代码。规则如下:

  • 它以 B 或 J 或 28 开头
  • 字符串的总长度必须是 7 或 13 个字符(包括起始字符)
  • 起始字符后面的字符必须全部为数字

谁能帮我这个 ?谢谢

我尝试了类似的东西

$pattern = "/^((J|B|28)([0-9])({7}|{13})?/i";

但这似乎不起作用:\

4

2 回答 2

7
$pattern = "/^(?=(.{7}|.{13})$)(B|J|28)\d+$/";
于 2013-02-19T10:10:40.833 回答
1

首先使用下面的正则表达式来匹配模式。它将捕获第一组中的第一个标识符和第二组中的以下数字。

<?php 
$pattern = "/^(B|J|28)([0-9]+)$/i"; 
?>

然后运行strlen()以验证长度。正则表达式不是验证组间可变长度的好工具。

<?php 
$hasValidLength = strlen( $str ) === 7 || strlen( $str ) === 13; 
?>
于 2013-02-19T10:06:23.830 回答