2011-12-20 55 views
0

我對php很陌生。我需要檢查給定的字符串是否有來自給定集合的字符,如{a, b, c}。所以,我正在嘗試正則表達式。 "(abc)+"應該做的伎倆。整個字符串的正則表達式匹配

但是,查看preg_match和相關函數的手動條目,我注意到這些函數執行子字符串匹配,而不是將整個字符串與正則表達式規則進行匹配。

我敢肯定有一個簡單的方法來做到這一點。基本上,我需要一個二進制答案,不管整個字符串是否與規則匹配。你們能幫我嗎?

謝謝!

+2

您是否嘗試過應用正則表達式來測試字符串? – 2011-12-20 05:37:13

+1

請參閱http://regular-expressions.info/以獲取更好的介紹,並查找'^'和$'斷言。 – mario 2011-12-20 05:39:27

+0

@mario:那麼,你是說「^(abc)+ $」會適合我嗎? – Navneet 2011-12-20 06:53:51

回答

3

您可以用方括號創建字符類。所以[abc]將匹配類中的任何字符(括號)。

要得到一系列它們,你需要一個量詞。您已經使用了+這意味着一個或多個。如果您還想要允許空字符串,則可以使用含義爲零或多個的*

爲確保您檢查完整的字符串,您需要錨點。 ^將匹配字符串的開始和$字符串的結尾。

^[abc]+$ 

如果完整的串僅由abc並具有至少一個字符此正則表達式將匹配。

您可以在線測試正則表達式,例如在Regexr上。你可以see this regex here,當然可以修改它。

1

而不是匹配整個字符串到你想要的字符,你可以嘗試匹配任何其他字符,如果有甚至一個匹配,那麼字符串不遵守你的規則。

只要使用這樣的事情:

[^abc]