Javascript 正则表达式匹配字符串的前n个字符

Javascript 正则表达式匹配字符串的前n个字符,javascript,regex,node.js,Javascript,Regex,Node.js,我正在创建一个正则表达式来根据一些文本动态查询MySQL数据库。我已经解析了文本,现在我需要根据文本生成一个正则表达式,该正则表达式将匹配一个字符串,该字符串包含文本的前N个字符,最小值为3个字符。到目前为止,我正在这样做: var regex = new RegExp('^' + text.substr(0, 3).replace(/[[\]{}()*+?.\\|^$\-,&#\s]/g, '\\$&')); 这可以确保前三个字符匹配,但是我想查询数据库,看看是否有任何与文本

我正在创建一个正则表达式来根据一些文本动态查询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变量)


已编辑:添加了一个子句以确保只匹配输入中包含的字符串,而不匹配其他字符串

,但这不允许像“test stringggg”或“tesfoo”这样的字符串在我的示例中不应该通过的地方通过吗?在我的示例中,“tes”、“test string”和“test str”之所以通过,是因为它们是完全位于左侧原始文本中的字符串。你是对的,我忽略了一半。我对查询进行了编辑,这样它就成功了(至少我认为是这样!)。但是我没有使用正则表达式,只是添加了另一个子句,确保列的值包含在字符串中。这是预期的行为吗?