對不起,如果這是一個愚蠢的問題,但我是新來的正則表達式。出於某種原因,無論我爲其設置$ id,它總是返回true。preg_match總是返回true/1
$id = "tt0944557";
if(preg_match("/tt\\d{7}/", $id)) {
echo "match";
} else {
echo "no match";
}
$ id將始終以 「TT」,然後開始7號
對不起,如果這是一個愚蠢的問題,但我是新來的正則表達式。出於某種原因,無論我爲其設置$ id,它總是返回true。preg_match總是返回true/1
$id = "tt0944557";
if(preg_match("/tt\\d{7}/", $id)) {
echo "match";
} else {
echo "no match";
}
$ id將始終以 「TT」,然後開始7號
試試這個代碼:
$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.因此,它組成字符串爲tt#######
。
我用regex101
我在regex101上試過這個,但是當我把它放到一個活的腳本中時,它總是如此。 – Benwhittaker25
那麼它會一直如此,如果在你提供的ID匹配 – GrumpyCrouton
這應該正常工作建立了這個模式,適用於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";
}
我對於正則表達式也很新穎,並且很想知道,是什麼讓你成爲比我更好的答案?或者它們基本相同?另外,我無法讓你的工作使用[PHPTESTER](http://phptester.net/),我認爲你錯過了模式中的結尾斜槓。另外我想說,我不是在敲你的答案,我會合法地喜歡更多地瞭解你的答案vs我的:) – GrumpyCrouton
@GrumpyCrouton不,我說哪裏更好?我只是提交了我的答案的版本,一個替代正則表達式匹配。使用完全表示代替\ d,因爲我工作的地方\ d將允許任何數字,其中[0-9]我也可以[0-3]只允許0,1,2和3作爲可能的選項參見http:// rubular.com/r/Hnf2hRNZNp – clearshot66
我告訴過你爲什麼大聲笑 – clearshot66
你可以試試'/(TT \ d {7})/'首先匹配2 t,然後匹配任意數量的7。 – GrumpyCrouton
'tt0944557'是一個有效的輸入,所以它爲什麼不返回'true'? – anubhava
嘗試「/^tt [0-9] {7} $ /」 – clearshot66