0

正規表現が苦手です。php正規表現を行う方法、文字列の最初の単語が(a-h)、2番目の単語が@、3番目の部分が数字(長さの範囲は4〜15)であるかどうかを判断しますか?

私のphp正規表現は正しいですか?

$title  =  'c@356920'; //h@907659042423
if (preg_match ("/^[a-h]{1}\@[0-9]{4,15}/i", $title)) {
    echo 'ok';
}
4

3 に答える 3

0

ここでゴルフをしている場合は、次のことをお勧めします。

/^[a-h]@\d{4,15}$/i

({1}を削除し、[0-9]を\ dに置き換えました)

于 2012-08-07T11:15:17.413 に答える
0

一致させる必要があるのがそれだけの場合は、後部アンカー記号($)を追加する必要があります。したがって、コードをそれから次のように変更する必要があります。

$title  =  'c@356920'; //h@907659042423
if (preg_match ("/^[a-h]{1}@[0-9]{4,15}$/i", $title)) {
    echo 'ok';
}

@また、シンボルをエスケープする必要はありません。正規表現は、そのまま、そのシーケンスで始まる任意の文字列と一致しますが、他の量のデータを後で追跡できます(質問から、それがあなたが追跡しているものかどうかはわかりません)。

于 2012-08-07T08:55:09.610 に答える
0

これまでのところ良さそうですが、2つの小さな変更があります

/^[a-h]{1}@[0-9]{4,15}$/i
  • 逃げないで@
  • $最後に、それ以外の場合は、その後に任意の数の任意の文字を許可するためです(これは「行の終わり」-アンカーです)。
于 2012-08-07T08:55:56.780 に答える