Mysql regexp防止字符成为数字

时间:2012-07-02 19:13:53

标签: php mysql

有人可以帮我解决这个错误。如果之后有另一个号码,我需要以下代码才能匹配

$query = "SELECT * FROM mytable WHERE server_name REGEXP '(server ?" . $server_id . ")' ";

例如,如果$ server_id是50,它当前匹配服务器500,501等,我也不想要它,但应该允许匹配'server50''server50 100mbit''server50,100mbit'等字符之后需要成为另一个数字以外的任何东西,甚至可以什么也不做。

Stu

2 个答案:

答案 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个字符。如果有更多的追逐者,你可以启动它,或类似的东西