Mysql正则表达式字母数字与一些特殊字符

时间:2013-04-11 22:13:22

标签: php mysql regex

好吧,我已经做了一些噩梦,所以我把我的愚蠢的头鞠躬到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中一些真正重要的核苷酸序列允许我更有效地使用大脑(或拥有它们),我在这个正则表达式或查询本身中缺少什么? 提前谢谢任何人。

1 个答案:

答案 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预处理语句)。