1

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

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

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

斯图

4

2 回答 2

1

[^0-9]在正则表达式中匹配非数字。

$query = "SELECT * FROM mytable 
    WHERE server_name REGEXP 'server ?" . $server_id . "([^0-9]|\$)' ";
于 2012-07-02T19:19:17.453 回答
1

你会想要对一个数字做一个正则表达式。/^0-9/ 然后你需要做的是如果返回一个匹配,你需要说“嘿,那是一个数字,错了!” 而如果它返回一个空集,那将是一个匹配项。

您还可以针对它不是数字执行正则表达式,将 NOT 字符放在 ^ 和 [ 之间。

我现在忘记了 NOT syntaqx,但用普通的术语来说,它看起来像 /^![0-9]/

斜线通常是正则表达式的符号。

使用您的东西,您需要执行类似 /^serverid[0-9][0-9]/ 的操作,它将正则表达式与 SERVERID[][] 进行比较,因此它只会读取前 2 个字符。如果有更多字符,您可以将其启动,或类似的事情

于 2012-07-02T19:24:11.913 回答