PHP正则表达式字符串,以某些字符开头,后跟数字

时间:2013-02-19 10:02:30

标签: php regex

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

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

任何人都可以帮我吗?感谢

我试过像

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

但它似乎不起作用:\

2 个答案:

答案 0 :(得分:6)

$pattern = "/^(?=(.{7}|.{13})$)(B|J|28)\d+$/";

答案 1 :(得分:1)

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

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

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

<?php 
$hasValidLength = strlen( $str ) === 7 || strlen( $str ) === 13; 
?>