PHP中的正则表达式

PHP中的正则表达式,php,regex,pcre,Php,Regex,Pcre,说到使用正则表达式,我还是个新手。我正在尝试设置一个正则表达式,如果“0”本身不匹配,它将永远不会匹配。我有5个测试表达式。最后4个应该匹配,第一个不应该匹配。然而,我似乎只能让中段比赛。我如何设置它以使最后一个也匹配 <?php $data1='0'; $data2='New Triggered By Test 01'; $data3='Hello'; $data4='01 Test'; $data5='00'; $pattern='/[^0]{1}/'; echo preg_mat

说到使用正则表达式,我还是个新手。我正在尝试设置一个正则表达式,如果“0”本身不匹配,它将永远不会匹配。我有5个测试表达式。最后4个应该匹配,第一个不应该匹配。然而,我似乎只能让中段比赛。我如何设置它以使最后一个也匹配

<?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)
?>

让我们保持简单:

$data !== '0';
让我们保持简单:

$data !== '0';

你想要匹配的是

  • 不是
    0
    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";
    }
}

你想要匹配的是

  • 不是
    0
    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";
    }
}
要么是一个零,后跟至少一个其他字符,要么是一个不以零开头的字符串

IDEONE概念的现场验证:

要么是一个零,后跟至少一个其他字符,要么是一个不以零开头的字符串


IDEONE上的实时概念验证:

您的表达式表示您应该有一个或多个不是“0”的字符。“00”没有任何不是“0”的字符。请显示另一个不应匹配的字符串,与当前情况一样,您甚至不需要正则表达式。您的表达式表示您应该有1个或多个非“0”字符。“00”没有任何不是“0”的字符。请显示另一个不应匹配的字符串,因为在当前情况下,您甚至不需要正则表达式。解决了本例中的基本问题,但作者确实特别要求使用正则表达式。!=,否则也会触发
。不幸的是,我需要它是一个正则表达式,否则我会这样做,解决了本例中的根本问题,但作者确实特别要求使用正则表达式。!==,不幸的是,我需要它成为一个正则表达式,否则我会这样做。我不知道你是如何从OP的问题中扣除这组规则的。这与他的案例2和案例3不匹配。@Tuga,是的,它有效@Juhana,他想匹配所有条件,除了一个只有
0
的字符串。。。只要检查字符串是否与
'0'
不匹配就足够了。RegexBuddy给出了错误的否定。。。在php中运行它之后,我意识到它是有效的,很抱歉,+1:)我不知道你是如何从OP的问题中扣除这组规则的。这与他的案例2和案例3不匹配。@Tuga,是的,它有效@Juhana,他想匹配所有条件,除了一个只有
0
的字符串。。。只要检查字符串是否与
'0'
不匹配就足够了。RegexBuddy给出了错误的否定。。。在php中运行它之后,我意识到它正在工作,对此表示抱歉,+1:)