2011-12-20 56 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]