3

好吧,我已经做了一些噩梦,所以我向 Stackoverflow 的全能蜂巢思维低头。

UPD:我的任务的参数已更改。我需要找到可能包含特殊字符(如括号 () 和/或 @、#、&、$)的代码。

因此代码可能如下所示:

“A”、“Bb”、“2C8”、“A7(BO)19”、B29H$、29H(6JI)0#等

问题是所有这些代码都是可选的。我已经尝试过像 Barmar(见回复 1)建议的那样,但稍微修改了 MySQL 查询:

SELECT *
FROM table
WHERE column REGEXP '^[a-z0-9\@\#\$\&()]*$' 
AND column LIKE CONCAT('%', '$v', '%')

如果我寻找“SLJ”或“S(LJ)”,它无法返回“S(LJ)9”或“09S(LJ)3$”

好吧,除了我的 DNA 中一些真正重要的核苷酸序列可以让我更有效地使用大脑(或拥有它们)之外,我在这个正则表达式或查询本身中缺少什么?提前感谢任何人。

4

1 回答 1

2
SELECT *
FROM table
WHERE column REGEXP '^[a-z0-9()]*$' /* code contains alphanumerics and parentheses */
AND column NOT REGEXP '[0-9]{3}' /* code does not contain >2 digits in a row */
AND column LIKE CONCAT('%', ?, '%') /* code contains the user input */

在哪里 ?与用户输入绑定(您应该使用 PDO 或 mysqli 准备好的语句)。

于 2013-04-11T22:27:45.883 回答