我在使用这个正则表达式时遇到了麻烦。它在字符串的开头不匹配。
为什么此正则表达式不匹配roll
或rolls
?
/^[rR]olls?/
更新
这是我的代码:
var cleaned = connection.escape(move).toLowerCase();
var sql = "SELECT n FROM things WHERE n LIKE ";
if(cleaned.match(/^rolls?/))
{
sql += "\"%roll%\"";
connection.query(sql, handleErr);
}
答案 0 :(得分:0)
看看这个fiddle。
你正在测试String.match(pattern),它返回匹配的字符串部分 - W3C Schools。
您想要测试的是pattern.test(String) - W3C Schools
var cleaned = connection.escape(move).toLowerCase();
var sql = "SELECT n FROM things WHERE n LIKE ";
var pattern = /^rolls/i;
if (pattern.test(cleaned))
{
sql += "\"%roll%\"";
connection.query(sql, handleErr);
}
答案 1 :(得分:0)
原来我的代码输入错误了。我发现connection.escape()。length返回的长度大于move.length。 escape()返回一个带有一些额外字符的字符串。我通过重新排序我的代码来修复它,首先比较正则表达式,然后在将输入附加到查询之前清理输入。
<强>固定强>
var sql = "SELECT n FROM things WHERE n LIKE ";
if(move.match(/^rolls?/))
{
sql += connection.escape(move).toLowerCase();
connection.query(sql, handleErr);
}