gpt4 book ai didi

PHP preg_match : a pattern which satisfies all MySQL field names (including 'table.field' formations)

转载 作者:行者123 更新时间:2023-11-29 06:21:45 24 4
gpt4 key购买 nike

我需要一个满足 mysql 字段名称的模式,而且还可以选择在其前面添加表名称

示例:

mytable.myfield
myfield
my4732894__7289FiEld

这是我尝试过的:

$pattern = "/^[a-zA-Z0-9_]*?[\.[a-zA-Z0-9_]]?$/";

这适用于我之前需要的内容,这只是字段名称:

$pattern = "/^[a-zA-Z0-9_]*$/";

有什么想法为什么我的添加不起作用?

也许我正在编写正则表达式,所以我会解释我添加的内容......首先 '?'就是说它不贪婪,即。如果下一部分即“[.[a-zA-Z0-9_]]?”它将停止很满意。现在,第二部分与第一部分相同,只是它是可选的(因此末尾有“?”)并且以句点开头(因此“[.”和“]”包裹着我的旧子句。显然,“^”和“$”代表字符串的开头和结尾

所以...有什么想法吗?

(另外,我有点困惑为什么我需要在开头/结尾放入那些“/”,所以如果你能告诉我为什么需要它,那就太棒了)

非常感谢! (如果你真的读了这一切,谢谢你……这真是一段漫谈)

最佳答案

[...] 用于构造字符类。使用 (?:...) 进行分组。

顺便说一句,\w 相当于 [a-zA-Z0-9_],所以

$pattern = "/^\\w+(?:\\.\\w+)?$/"

请注意,我还用 + 替换了 *?。由于 \w 永远不会匹配 .,因此不需要非贪婪匹配 (*?*)。但我认为 .field 不应该有效,因此应该使用 + 而不是 *

关于PHP preg_match : a pattern which satisfies all MySQL field names (including 'table.field' formations),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3018100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com