我想匹配這樣的字符串:3個字母后面有一個空格正則表達式後面一個數字
ABC 123
我在PHP代碼中使用正則表達式的嘗試:
preg_match('/^[A-Z]{3}[ ]{3}[0-9]{3}&/', $class_code)
但它似乎符合甚至像字符串這樣:
ABC jsfdkajf 123
它應該給這個字符串錯誤,但它給人一種MATC H。我究竟做錯了什麼?
我想匹配這樣的字符串:3個字母后面有一個空格正則表達式後面一個數字
ABC 123
我在PHP代碼中使用正則表達式的嘗試:
preg_match('/^[A-Z]{3}[ ]{3}[0-9]{3}&/', $class_code)
但它似乎符合甚至像字符串這樣:
ABC jsfdkajf 123
它應該給這個字符串錯誤,但它給人一種MATC H。我究竟做錯了什麼?
這個表達式應該爲你工作:
^\w{3}\s?\d{3}$
示例代碼:
<?php
$str = "ABC jsfdkajf 123"; //"ABC 123"
if(!preg_match('/^\w{3}\s?\d{3}$/', $str))
echo "no ";
echo "match";
?>
輸出:
no match //match
正則表達式的解釋:
^\w{3}\s?\d{3}$
在一行
個有用的正則表達式鏈接:
與您正則表達式的問題是,要嚴絲合縫3位,但你只有1 ABC 123
。
在PHP中,你可以使用Unicode字符集,我會和他們一起去。
正則表達式:^\p{Lu}{3}\p{Zs}+\p{N}{3}$
^
- 線\p{Lu}{3}
的開始 - 三個大寫字母\p{Zs}+
- 任何數量的空格(根據需要進行調整,還包括硬盤空間)\p{N}{3}
- 三個數字完全相同$
- 行結束下面是一個簡單的PHP代碼:
$re = "/^\p{Lu}{3}\p{Zs}+\p{N}{3}$/";
$str = "ABC 123";
preg_match_all($re, $str, $matches);
print_r($matches[0]);
輸出and a link to a sample program:
[0] => ABC 123
爲了您的正則表達式,你必須改變:
preg_match('/^[A-Z]{3}[ ]{3}[0-9]{3}&/', $class_code)
要
preg_match('/^[A-Z]{3}[ ][0-9]{3}$/', $class_code)
^--- use this instead &
順便說一句,你可以使用這樣的正則表達式:
^[A-Za-z]{3} \d{3}$
或者使用不敏感的標誌:
^[a-z]{3} \d{3}$
$re = "/^[a-z]{3} \\d{3}$/mi";
$str = "ABC 123\nABC 1\n";
preg_match_all($re, $str, $matches);
另一種看法是,你貼「3個字母后跟一個空格,接着是一個數字」,所以如果你只需要一個在最後的數字,你可以使用:
^[A-Za-z]{3} \d$
的符號'&'在最終應該是美元符號'$'。 – 2015-04-02 22:58:23