我正在创建一个正则表达式,以根据某些文本动态查询MySQL数据库。我解析了文本,现在我需要根据文本创建一个正则表达式,该文本将匹配包含文本的前N个字符且至少包含3个字符的字符串。到目前为止,我这样做:
var regex = new RegExp('^' + text.substr(0, 3).replace(/[[\]{}()*+?.\\|^$\-,&#\s]/g, '\\$&'));
这确保前三个字符匹配,但后来我想查询数据库以查看是否有任何匹配文本的其余部分。例如,如果文本是“测试字符串”,我想创建一个与数据库中的列匹配的正则表达式,例如' tes',' test str&# 39;,'测试字符串'等等,直到文本为止。
我不确定如何说出标题,所以希望我没有错过任何类似的问题。如果有更好的方法来查询数据库,我也对此持开放态度。
答案 0 :(得分:1)
在普通的MySQL中你可以写:
select * from table where column like concat(left(@YOUR_INPUT, 3), '%') and instr(@YOUR_INPUT, column);
其中@YOUR_INPUT将是你手头的全文值(无论你将它作为参数[这是正确的方式:)传递给查询还是你把它放在MySQL变量中)。
编辑:添加了一个子句,以确保只匹配输入中包含的字符串而不匹配其他字符串