0

でいくつかの単語をチェックする必要がありますpreg_match。単語に数字とが含まれている場合は、.「ok」をエコーし​​ます。

私はこれをチェックしたいとしましょう:

4814.84dszs  //ok
412.84.61.412  //ok
hello.4you //ok
welcome.user //not ok
481221222 // not ok

私はこれを使用しました:

if (preg_match('/^[0-9][.]+$/', 'MY_WORD_HERE'))
{
echo 'ok';
}

しかし、それは私が探している正確な結果を私に与えません。

4

4 に答える 4

1

これを使って:

if (preg_match('/([0-9]+[\.]+|[\.]+[0-9]+)$/', 'MY_WORD_HERE'))
{
echo 'ok';
}

「+」(プラス記号)は、一致した式が1回以上出現することを意味します

の場合にもこれを使用できます。数字は互いに続いておらず、真ん中に他の文字があります:

if (preg_match('/([0-9]+[^0-9\.]*[\.]+|[\.]+[^0-9\.]*[0-9]+)$/', 'MY_WORD_HERE'))
{
echo 'ok';
}

説明: 数字の後にドットがあるかどうか、ドットの後に数字があるかどうか、または数字の後に他の文字が続く場合でも、ドットがあるかどうか、またはその逆かどうかをチェックします。

于 2013-03-26T05:13:22.230 に答える
1

これを使ってみてください

        $pattern = '%(?=.*[0-9])(?=.*\.)%';
        if (preg_match($pattern, 'MY_WORD_HERE'))
        {
           echo 'ok';
        }

        ?>
于 2013-03-26T05:15:02.367 に答える
1

これを試して :

if (preg_match('/(\d+\.)|(\.\d+)/', '4814.84dszs'))
{
echo 'ok';
}

^->文字列の先頭を示します

$->文字列の終わり。

だからあなたのパターンは最初から最後まで言う(文字列全体のマッチング)

これを削除すると、文字列全体ではなく、文字列内の任意の場所に一致します。

于 2013-03-26T05:22:15.970 に答える
1
$pattern = '#^([\d]{1,3})([.][\d]{1,3})([.][\d]{1,3})([.][\d]{1,3})$#';
于 2013-03-26T05:24:28.747 に答える