JavaScript:检查字符串是否包含“.”(句号)

JavaScript:检查字符串是否包含“.”(句号),javascript,string,forms,search,Javascript,String,Forms,Search,我试图搜索一个字符串,看看它是否包含句点。 我将输入字段的值加载到变量中,然后对该变量运行javascript字符串搜索方法 var _email = document.getElementById(Input).value; var contains_dot = _email.search("."); 如果在字符串或表示匹配位置的数字中未找到句点,则contains_dot变量应返回-1 可悲的是。。。变量“contains_dot”每次只返回0。 我做错什么了吗。。有更好的办法吗 请注意:

我试图搜索一个字符串,看看它是否包含句点。 我将输入字段的值加载到变量中,然后对该变量运行javascript字符串搜索方法

var _email = document.getElementById(Input).value;
var contains_dot = _email.search(".");
如果在字符串或表示匹配位置的数字中未找到句点,则contains_dot变量应返回-1

可悲的是。。。变量“contains_dot”每次只返回0。 我做错什么了吗。。有更好的办法吗

请注意:

contains_dot = _email.indexOf(".");
不适用于此问题,因为无论输入什么,它都返回0。

您可以使用:string.includes。 这将返回true或false

如果您想要1或-1,只需使用:

x、 包括?1-1

编辑:

再搜索一点后,我发现: 等等

使用x.indexOf.>-1将其参数解释为正则表达式,因此需要转义。使用双反斜杠,否则将匹配任何字符:

var contains_dot = _email.search("\\.");
但由于不需要正则表达式,因此使用起来更简单:

为什么会这样? 电子邮件搜索的原因。;每次都返回0,因为将正则表达式作为其输入

。表示匹配正则表达式中的任何字符。换句话说,如果您的输入至少有一个字符,它将返回0

解决方案 如果您只是将其更改为_email.search/\./;,它将完全按照您的预期工作

浏览器支持:所有已知浏览器

如果你不关心浏览器支持,你也可以使用“email.includes.”;正如凯德·布朗所提到的


供参考。浏览器支持:只有Chrome 41+和Firefox 40+最近的浏览器

.indexOf'.@AnthonySottile我也尝试了.indexOf'.'并且结果是一样的。。。所以这不起作用。请在尝试查看电子邮件是否包含@AnthonySottile有正确的答案。在调用_email.indexOf.'之前发送一封console.log_电子邮件,以确保您的输入字符串符合您的预期。谢谢,string.includes。为我做了这项工作。我也会在链接的帖子上读一些东西。使用正则表达式似乎有点过头了。在这种情况下indexOf更好。谢谢,你的代码片段完全符合我的要求。我还学习了一些关于“匹配正则表达式中的任何字符”的知识。@ReallyNiceCode很棒:你可以在上查看更多信息。在JS正则表达式中。如果你只需要找到点,我推荐indexOf或者其他人提到的Include。他们的工作效率应该更高。indexOf也与所有已知的浏览器兼容。@jonathanGB同意。我想指出原始代码不起作用的原因,并根据OP的原始推理提供一个快速修复。我理解,你解释得很好。但您应该编辑您的答案,以提及indexOf以及为什么应该在此处的搜索中使用它,如果需要兼容性,则可能会过度使用includes。'var contains_dot=_email.search\\\.'。。。真的做了,谢谢_email.indexOf。;以前尝试过,但返回的结果是0Hmm…这里肯定发生了其他事情,因为这正是indexOf所做的。e、 “foobar.indexOf.”返回-1。
var contains_dot = _email.indexOf(".");