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

发布于 2024-12-07 14:28:39 字数 801 浏览 1 评论 0原文

我有以下运行良好的正则表达式模式:

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

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

一些文字=一些更多的文字;一些东西

一些文字=一些更多的文字;一些东西;一些东西

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

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

我想我可以使用下面的正则表达式模式 - 它仅在有一个时才起作用,但如果有更多由分号分隔的文本则不会...我知道我可能可以添加类似 [ 的内容;]* 但我希望验证严格以确保它采用这种格式(因此只能在文本之间的任何地方都不能有分号)。

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

如果有帮助的话,我目前正在使用 PHP 的 preg_match() 函数(因此可以以 array() 形式使用匹配项)。

我不限于使用正则表达式,因为这是我能想到的唯一方法,因此我欢迎其他方法或任何可以与此一起使用的方法(只要结果可以作为数组轻松获得,哈哈)。

另外,我想指出,在写这篇文章(并浏览标记系统)时,我有一个新闻快报...也许使用 preg_match_all()PCRE 递归功能可能是一个可能的解决方案吗?

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

I have the following regex pattern which works fine:

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

However I want to extend it so it supports the following example inputs:

some text=some more text;something

some text=some more text;something;something

some text=some more text;something;something;something

As you can see from the above example inputs the semi-colon (;) character is being used as a seperator and is used to seperate text (it is between text).

I guess I can use the following regex pattern below - it will only work when theres is one, but won't if there is more text seperated by a semi-colon... I know I can probably add something like [;]* but I want the validation to be strict to ensure it is in that format (so there can't semi-colons just anywhere they have to be between text only).

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

If it helps I'm currently using PHP's preg_match() function (so the matches can be utilized in array() form).

I'm not limited to using regex as that was the only method I could think of, therefore I'm welcome to other methods or any method which can be used alongside this (providing the results can be easily attained as an array LOL).

Also I'd like to note whilst writing this (and flicking through the tagging system) I had a news flash...perhaps using preg_match_all() with the PCRE recursive functionality could be a possible solution?

Appreciate all responses and thank you for all help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

带上头具痛哭 2024-12-14 14:28:39

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

Why not just use explode() on the second half to explode on any semicolons?

呆° 2024-12-14 14:28:39

您可以尝试这个正则表达式:

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

You can try this regex:

#^(.+?)=((.+?)(;)?)+$#D
归属感 2024-12-14 14:28:39

尝试:

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

Try:

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

会发光的星星闪亮亮i 2024-12-14 14:28:39

我会尝试:

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

I would try:

#^(.+?)=(.+?)(?:;(.+?))+?$#D
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文