好吧,我已经做了一些关于它的噩梦,所以我向 Stackoverflow 的全能 hive 头脑低下我愚蠢的头。
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 中一些真正重要的核苷酸序列可以让我更有效地使用大脑(或拥有大脑)之外,我在这个正则表达式或查询本身中缺少什么? 提前感谢任何人。
最佳答案
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 */
在哪里?与用户输入绑定(bind)(您应该使用 PDO 或 mysqli 准备语句)。
关于php - 带有一些特殊字符的 Mysql 正则表达式字母数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959803/