PHP中的正则表达式

时间:2011-08-24 21:01:52

标签: php regex pcre

在使用正则表达式时,我仍然是一个新手。我正在尝试设置一个正则表达式,其中“0”永远不会匹配,如果它本身。我有5个测试表达式。最后4个应该匹配,第一个不应该匹配。但是我似乎只能让mid3匹配。如何设置它以使最后一个匹配呢?

<?php
$data1='0';
$data2='New Triggered By Test 01';
$data3='Hello';
$data4='01 Test';
$data5='00';

$pattern='/[^0]{1}/';

echo preg_match($pattern,$data1);

echo preg_match($pattern,$data2);

echo preg_match($pattern,$data3);

echo preg_match($pattern,$data4);

echo preg_match($pattern,$data5)
?>

3 个答案:

答案 0 :(得分:2)

您想要匹配的是

  • 不是0
  • 的单个字符
  • 或多个字符

试试这个:

"#^([^0]|.{2,})$#"

评论:

"/^      # begining of the input string
(
  [^0]   # one char, everything but zero
  |.{2,} # or any sequence of more than one char
)$/"

测试脚本:

$inputs = array(
    '0',
    'New Triggered By Test 01',
    'Hello',
    '01 Test',
    '00',
);

foreach($inputs as $input) {
    echo "$input: ";

    if (preg_match("#^([^0]|.{2,})$#", $input)) {
        echo "OK\n";
    } else {
        echo "NOT OK\n";
    }
}

答案 1 :(得分:1)

让我们保持简单:

$data !== '0';

答案 2 :(得分:1)

$pattern='/^(0.+|[^0]).*$/';

为零,后跟至少一个其他字符,或者不以零开头的字符串。

IDEONE概念的实时证明:http://ideone.com/2RXrr