我有一个准则如下。
'#^(VK[1-8][0-9A-Z]+)#i'这很好,如果字符串以VK1-8开头(例如VK2TEST ),则返回true。但是,如果在0-9A-Z之后,有一个/和更多字符的可能性,其中一些字符我需要返回true,而有些字符需要返回false,那该怎么办?例如VK2TEST/P。
如果我需要返回,让我们假设,VK2TEST/P和VK2TEST/M为真,但其他字母数字字符继续/为假,我如何做呢?这有可能吗?例如..。
VK2TEST = true
VK2TEST/P = true
VK2TEST/P1 = false
VK2TEST/M = true
VK2TEST/MM = false
VK2TEST/QRP = true我的研究指向条件子模式,但我不知道我是否正朝着正确的方向发展。
发布于 2015-06-12 16:20:55
关于下列结果:
VK2TEST = true
VK2TEST/P = true
VK2TEST/P1 = false
VK2TEST/M = true
VK2TEST/MM = false
VK2TEST/QRP = true可以使用regexp,如下所示:
'#^(VK[1-8][0-9A-Z]+(\/(M|P|QRP))?)$#i'此语法将在PCRE元字符语法页面。中讨论。
以下是一些建议:
一些注意事项:
+应该在类之外,例如[1-8]+包含11。如果您想要1-8或+,请使用[1-8+]。而且,在您的示例中,[A-Z+]将匹配T而不是额外的EST字符。为了匹配单词测试,您可以在类定义之外使用[A-Z]+和+。/,需要转义,因此\/。()中包含的子模式,同时使用|分支管道来分离模式。https://stackoverflow.com/questions/30807640
复制相似问题