用preg_match检查一些单词

时间:2013-03-26 05:06:34

标签: php preg-match

我需要用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 个答案:

答案 0 :(得分: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';
}

说明:它检查是否有一个数字后跟一个数字,或者是否有一个点后跟一个数字,或者即使有一个数字后跟其他字符,然后是一个点,反之亦然。

答案 1 :(得分:1)

尝试使用此功能             

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

        ?>

答案 2 :(得分:1)

试试这个:

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

^ - >表示字符串的开头

$ - >字符串结束。

所以你的模式从开始到结束(匹配整个字符串)

如果删除它,它将匹配字符串中的任何位置而不是整个字符串。

答案 3 :(得分:1)

$pattern = '#^([\d]{1,3})([.][\d]{1,3})([.][\d]{1,3})([.][\d]{1,3})$#';