有人可以帮我解决这个错误。如果之后有另一个号码,我需要以下代码才能匹配
$query = "SELECT * FROM mytable WHERE server_name REGEXP '(server ?" . $server_id . ")' ";
例如,如果$ server_id是50,它当前匹配服务器500,501等,我也不想要它,但应该允许匹配'server50''server50 100mbit''server50,100mbit'等字符之后需要成为另一个数字以外的任何东西,甚至可以什么也不做。
Stu
答案 0 :(得分:1)
在正则表达式中匹配非数字为[^0-9]
。
$query = "SELECT * FROM mytable
WHERE server_name REGEXP 'server ?" . $server_id . "([^0-9]|\$)' ";
答案 1 :(得分:1)
您需要针对某个数字执行正则表达式。 / ^ 0-9 /然后你需要做的是如果返回一个匹配,你需要说“嘿,这是一个数字,错了!”而如果它返回一个空集,那就是匹配。
你也可以对它进行正则表达式而不是数字,把NOT字符放在^和[。
之间此刻我忘记了没有感觉到我的头顶,但在共同的术语中,它看起来像 / ^![0-9] /
斜杠通常是正则表达式的标志。
你的东西,你需要做/ ^ serverid [0-9] [0-9] /这将比较正则表达式与SERVERID [] [],所以它只会读取前2个字符。如果有更多的追逐者,你可以启动它,或类似的东西