-7

该语句仅检查文本框中的“@”符号。

if (string1.indexOf("@")==-1){
 alert("Please input a valid email address!")
 document.example.email.focus()

这。if (string1.indexOf("@")==-1){为什么我们使用 -1 而不是 0。

这让我感到困惑,因为 0 几乎在任何地方都被用作“空”或“空”值。

4

6 回答 6

4

因为如果@在 的开头找到 ,string1即使找到它,它的索引也将为 0。

于 2012-09-20T07:59:14.440 回答
3

大多数编程语言中,索引是从零开始的,这意味着索引中的第一个位置(同样在大多数编程语言中,字符串是字符的索引)将是 0 - 因此 0 不能用于表示没有找到任何内容任何地方。


为了帮助澄清:

Astringchars(字符或单符号类型)的索引。所以,"hi@ho.com"是一个包含 9 个位置的索引:

[0] = 'h'
[1] = 'i'
[2] = '@'
[3] = 'h'
[4] = 'o'
[5] = '.'
[6] = 'c'
[7] = 'o'
[8] = 'm'

因为 JavaScript 中的索引是从零开始的,所以它们的第一个位置总是从 0 开始。indexOf使用 -1 来告诉你它找不到@任何地方,因为它不能使用 0,因为 0 实际上是索引的第一个位置。

即使strings不是索引,由于传统和事实标准的原因,大多数语言仍会使用 -1 表示找不到字符,使用 0 表示第一个位置。

在上面的示例中,indexOf("@")将返回 2,而不是 3。同样,因为索引是从零开始的。

于 2012-09-20T07:59:54.370 回答
2

indexOf返回传递的字符串的第一个从零开始的索引位置

  • 如果string1@then 开头,它将返回0
  • 如果string1的第二个字符是@它将返回1
  • 第三个字符将返回2
  • 第四个字符将返回3
  • 等等等等……

-1如果没有匹配,则返回,因为它不可能有-1从零开始的索引位置。

0不能使用,因为如果字符串以@


更多信息indexOf可以在这里找到:

http://www.tizag.com/javascriptT/javascript-string-indexOf.php

于 2012-09-20T08:02:25.220 回答
0

这是因为字符串中的字符是从左到右索引的,0 是第一个字符。

因此,如果您找到一个字符/字符串,您会期望从 0 到字符串长度的结果范围 - 1,并且保持返回类型相同似乎是合乎逻辑的。

于 2012-09-20T08:00:18.767 回答
0

它是-1,因为这意味着它无法找到您正在寻找的字符串或字符集。由于字符串就像一个字符数组,就像在任何其他数组中一样,索引总是从 0 开始。

于 2012-09-20T08:02:00.493 回答
0

这是一个示例,可以帮助您更好地理解:

var email = 'mymail@server.com';
//  indexes  0123456789...

如您所见, 的索引m为零,因为它位于字符串的开头,因此在此示例indexOf('@')中将返回6,因为位于字符串中@的第 6

那么,如果@没有找到,我们会返回什么?返回零表示找到了一些东西所以我们要返回一个非零值,根据indexOf-1

var invalidEmail = 'myEmail';
// indexes      -1 |0123456     
于 2012-09-20T08:16:09.493 回答