我正在创建一个正则表达式来根据某些文本动态查询 MySQL 数据库。我已经解析了文本,现在我需要根据文本创建一个正则表达式,该正则表达式将匹配包含文本的前 N 个字符且至少包含 3 个字符的字符串。到目前为止我正在这样做:
var regex = new RegExp('^' + text.substr(0, 3).replace(/[[\]{}()*+?.\\|^$\-,&#\s]/g, '\\$&'));
这可以确保前三个字符匹配,但随后我想查询数据库以查看文本的其余部分是否有任何匹配。例如,如果文本是“test string”,我想创建一个正则表达式,它将数据库中的列与“tes”、“test str”、“test string”等值进行匹配,最多只能匹配到正如正文所示。
我不太确定如何表达标题,所以希望我没有错过任何类似的问题。如果有更好的方法来查询数据库,我也愿意。
最佳答案
在普通的 MySQL 中你可以这样写:
select * from table where column like concat(left(@YOUR_INPUT, 3), '%') and instr(@YOUR_INPUT, column);
其中@YOUR_INPUT将是您手头的全文值(无论您将其作为参数传递[这是正确的方式:)]到查询还是将其放入MySQL变量中)。
编辑:添加了一个子句以确保仅匹配输入中包含的字符串,而不匹配其他字符串
关于javascript - 正则表达式匹配字符串的前 n 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23767165/