JavaScript:检查字符串是否包含“.”(句号)
我试图搜索一个字符串,看看它是否包含句点。 我将输入字段的值加载到变量中,然后对该变量运行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。 我做错什么了吗。。有更好的办法吗 请注意:
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(".");