验证并匹配特定格式的字符串

时间:2011-10-02 01:53:14

标签: php regex preg-match pcre preg-match-all

我有以下正则表达式模式,工作正常:

#^(.+?)=(.+?)$#D

但是我想扩展它以支持以下示例输入:

  

一些文字=更多文字;一些

     

一些文字=更多文字;某些东西;某种东西

     

某些文字=更多文字;某事;某事;某事

从上面的示例中可以看出,输入分号(;)字符用作分隔符,用于分隔文本(它位于文本之间)。

我想我可以使用下面的正则表达式模式 - 只有当theres是一个时它才会起作用,但是如果有更多的文本被分号分隔的话就不会...我知道我可能会添加{ {1}}但我希望验证是严格的,以确保它采用该格式(因此,只有在文本之间的任何位置都不能存在分号)。

[;]*

如果有帮助我当前正在使用PHP的#^(.+?)=(.+?);(.+?)$#D 函数(因此匹配可以preg_match()形式使用)。

我不仅限于使用正则表达式,因为这是我能想到的唯一方法,因此我欢迎使用其他方法或可以与此一起使用的任何方法(提供结果可以很容易地作为数组获得LOL)。

另外我想在写这篇文章时(以及浏览标记系统)注意到我有一个新闻快讯...也许使用带有array()递归功能的preg_match_all()可能是一个可能的解决方案?

感谢所有回复并感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

为什么不在后半部分使用explode()来爆炸任何分号?

答案 1 :(得分:1)

你可以试试这个正则表达式:

#^(.+?)=((.+?)(;)?)+$#D

答案 2 :(得分:0)

尝试:

#^(.+?)=(.+?)(;(.+?))+?$#D

答案 3 :(得分:0)

我会尝试:

#^(.+?)=(.+?)(?:;(.+?))+?$#D