好吧,我已经做了一些噩梦,所以我把我的愚蠢的头鞠躬到Stackoverflow的全能蜂巢。
UPD:我的任务参数已被更改。我需要找到可能包含括号()和/或@,#,&,$等特殊字符的代码。
所以代码看起来像:
“A”,“Bb”,“2C8”,“A7(BO)19”,B29H $,29H(6JI)0#etc
问题是所有这些代码都是可选的。我尝试过像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中一些真正重要的核苷酸序列允许我更有效地使用大脑(或拥有它们),我在这个正则表达式或查询本身中缺少什么? 提前谢谢任何人。
答案 0 :(得分: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预处理语句)。