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+$/";