很抱歉,如果这是一个愚蠢的问题,但我是regex的新手。出于某种原因,无论我将$ id设置为它,它总是返回true。
$id = "tt0944557";
if( preg_match( "/tt\\d{7}/", $id ) ) {
echo "match";
} else {
echo "no match";
}
$ id将始终以“tt”开头,然后是7个数字
答案 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
构建了这种模式