preg_match总是返回true / 1

时间:2017-07-06 18:24:06

标签: php regex

很抱歉,如果这是一个愚蠢的问题,但我是regex的新手。出于某种原因,无论我将$ id设置为它,它总是返回true。

$id = "tt0944557";

if( preg_match( "/tt\\d{7}/", $id ) ) {
    echo "match";
} else {
    echo "no match";
}

$ id将始终以“tt”开头,然后是7个数字

2 个答案:

答案 0 :(得分:1)

这应该可以正常工作,适用于rubular.com测试:

$id = "tt0944557";

正则表达式如下: /^从字符串的开头开始匹配

tt匹配前两个字符必须是tt

[0-9]仅在下一个字符为0,1,2,3,4,5,6,7,8或9

时匹配

{7}必须正是这些先前字符中的7个,所以1111111,2232321,但不是123或332. {0,7}会说它可能是0,1,2,3,4,5, 6或7长

$/此处停止匹配

if( preg_match( "/^tt[0-9]{7}$/", $id ) ) {
    echo "match";
} else {
    echo "no match";
}

答案 1 :(得分:0)

试试这段代码:

$id = "tt0944557";

if( preg_match( "/(tt\d{7})/", $id ) ) {
    echo "match";
} else {
    echo "no match";
}

我们需要关注的是模式,(tt\d{7})

括号表示group,因为这是一个选择,整个事物是一个组。下一部分是tt,这些是文字。它找到文字字符串" tt"在输入中。下一部分是\d{7}\d表示任意数字{7}表示正好#,在这种情况下,7。因此它将字符串组成{{1 }}

我使用regex101

构建了这种模式