preg_match我应该如何使用

时间:2009-08-03 13:40:43

标签: php

我有一个要检查的字符串,如果只有数字和数字执行另一个操作,则退出;

$data = 123412347JB91742F;

 if(preg_match('/[A-Z1-9]/', $data )) {
  echo $data;

} 
else { 
  exit; 
}

这样可以正常工作,但如果我向$data添加任何内容,如$或任何其他东西,它仍会打印该值。这段代码有什么问题?

编辑:

$data = preg_replace('/\-/', '', '1234-1234-JB91-8742F');

if(preg_match('/^[A-Z1-9]+$/', $data )) {
    echo $data;
} else {
    exit;
}

2 个答案:

答案 0 :(得分:2)

您的正则表达式只会检查该集合中是否至少有一个字符。请尝试使用此正则表达式:

/^[A-Z1-9]+$/

锚点^$标记字符串的开头和结尾。

答案 1 :(得分:2)

  1. 您的正则表达式将匹配包含数字或“正常”字符的每个字符串。
  2. $ data需要加引号。
  3. 您的代码应如下所示:

    preg_match('/^[A-Z1-9]+$/', $data)
    

    您想匹配零和小写字符吗?然后你的正则表达式应该是这样的:

    preg_match('/^[A-Z0-9]+$/i', $data)