Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式字符串,以特定字符开头,后跟数字_Php_Regex - Fatal编程技术网

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

PHP正则表达式字符串,以特定字符开头,后跟数字,php,regex,Php,Regex,我试图创建一个正则表达式来验证代码。规则如下: 它以B或J或28开头 字符串的总长度必须为7或13个字符(包括起始字符) 起始字符后面的字符必须是所有数字 有人能帮我吗?谢谢 我试过类似的东西 $pattern = "/^((J|B|28)([0-9])({7}|{13})?/i"; 但它似乎不起作用:\首先使用以下正则表达式来匹配模式。它将捕获第一组中的第一个标识符和第二组中的以下数字 <?php $pattern = "/^(B|J|28)([0-9]+)$/i"; ?>

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

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

我试过类似的东西

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

但它似乎不起作用:\

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

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

他说总长度必须在7-13之间,包括起始字符,我会检查。谢谢你的回答!哇。然后,他应该在运行正则表达式后执行
strlen()
检查。它与此不匹配例如:J100027872577我认为(问题的)想法是使用一个正则表达式与代码匹配。这些正则表达式总是有问题。。我不知道什么时候我会开始学习使用它们:)干得好,迈克,我也测试过它,它能工作+1把它改成
/^(?=({7}.{13})$)(B{J}28)\d+$/
,并会为速度投票;但更希望看到解释子模式、分隔符使用、反向引用等的编辑。。。这就是让DjMike(和其他人)进入下一个层次的原因:)顺便说一句,他的不区分大小写,你的不区分大小写。@Daniel true,我对正则表达式的理解很糟糕:\Have不得不承认这里巧妙地使用了条件检查,你可以通过将
?=(.7}|.{13}
更改为
?=(.7,13})来进一步简化
<?php 
$hasValidLength = strlen( $str ) === 7 || strlen( $str ) === 13; 
?>
$pattern = "/^(?=(.{7}|.{13})$)(B|J|28)\d+$/";