JavaScript search()方法在两个方面等于零,这会导致问题

JavaScript search()方法在两个方面等于零,这会导致问题,javascript,jquery,regex,json,Javascript,Jquery,Regex,Json,如果您使用这样一段代码: var string = "javascript"; var search = string.search(""); console.log(search); 然后你把这段代码: var string = "javascript"; var search = string.search("j"); console.log(search); 两段代码的计算结果均为0。这是相当恼人的,因为我认为它应该是-1,因为没有匹配,没有任何东西和。这是我试图编写的脚本中的一个

如果您使用这样一段代码:

var string = "javascript"; 
var search = string.search("");
console.log(search);
然后你把这段代码:

var string = "javascript"; 
var search = string.search("j");
console.log(search);
两段代码的计算结果均为0。这是相当恼人的,因为我认为它应该是-1,因为没有匹配,没有任何东西和。这是我试图编写的脚本中的一个问题,因为这两个值的计算结果完全相同,即使它们的值不相同,这使得我将.json文件中的所有数据从以下位置移动一个空间:

      "heman",
      "candy",
      "powerpuffgirls",
      "oranges"
为此:

      " heman",
      " candy",
      " powerpuffgirls",
      " oranges"
因为当我从输入字段测试用户输入的.json数据是否匹配时,我无法评估数据是空白还是输入了一个匹配字符(因为javascript搜索方法将两者计算为相同的数量“0”)。javascript无法知道“nothing”和“single matching char”之间的区别在零索引处移动(因为它是一个单独的匹配字符),这迫使我将所有.json数据移动到一个空间上

这样做感觉…不对,好像不是好的做法。这是一个解决方案,但似乎是一个蹩脚的方案。有人知道解决这种问题的方法吗?似乎是一个相当简单的常见问题。有什么方法可以解决这个问题,也许是使用正则表达式或其他什么吗?

记住这一点:
var search = query.length === 0 ? -1 : string.search(query);
始终,无论变量字符串的值是什么(包括空字符串)

所以,检查字符串的长度

if (string.length == 0) // Empty string

空字符串出现在字符串中的位置0处。请参阅极其愚蠢的答案,了解对该问题的哲学观点。为什么不在搜索前检查搜索字符串是否为空字符串?FWIW,搜索
也将返回
0
。应该使用Regexp。传递空字符串时,它将转换为与字符串开头匹配的Regexp
/(?:)/
。改用。哇!非常感谢。哼!真不敢相信我没看到。你是最棒的!
if (string.length == 0) // Empty string