我需要用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';
}
但它并没有给我我想要的确切结果。
答案 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})$#';