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

まず、次の正規表現を使用してパターンを照合します。最初のグループの最初の識別子と、2 番目のグループの次の数字をキャプチャします。

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

次に、実行strlen()して長さを検証します。正規表現は、グループ間で変数の長さを検証するための優れたツールではありません。

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