javascript正则表达式与开头不匹配

时间:2014-05-31 18:18:57

标签: javascript regex

我在使用这个正则表达式时遇到了麻烦。它在字符串的开头不匹配。

为什么此正则表达式不匹配rollrolls

/^[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);
}

2 个答案:

答案 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);
}