JavaScript:检查字符串是否包含'。' (一站式)

时间:2016-10-03 01:57:26

标签: javascript string forms search

我正在尝试搜索字符串以查看它是否包含句点"。" 我将输入字段的值加载到变量中,然后对该变量运行javascript字符串search()方法。

var _email = document.getElementById(Input).value;
var contains_dot = _email.search(".");

如果在字符串中找不到句点或者表示匹配位置的数字,则contains_dot变量应返回-1。

可悲的是......变量' contains_dot'每次只返回0。 难道我做错了什么? ..有更好的方法吗?

请注意:

contains_dot = _email.indexOf(".");

不适用于这个问题,因为无论输入什么,它都会返回0。

3 个答案:

答案 0 :(得分:4)

为什么会这样?

var contains_dot = _email.indexOf("."); 每次返回_email.search(".");的原因是String.prototype.search将正则表达式作为输入。

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

解决方案

如果您只是将其更改为.,它将完全按照您的预期运作。

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

如果您不关心浏览器支持,您也可以使用Cade Brown提到的_email.search(/\./);

See here以供参考。浏览器支持:仅限Chrome 41+和Firefox 40+(最近的浏览器)

答案 1 :(得分:0)

search将其参数解释为正则表达式,因此您需要使用(双)反斜杠转义<html> <head> <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=no" /> </head> <body> <div id="MyViewerDiv"></div> <!-- The Viewer JS --> <script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/three.min.js?v=v2.10.*"></script> <script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/viewer3D.js?v=v2.10.*"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <!-- Developer JS --> <script> function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } function initViewer(token, urn) { var viewerApp; var options = { env: 'AutodeskProduction', accessToken: token }; var documentId = atob(urn); // 'urn:<YOUR_URN_ID>'; Autodesk.Viewing.Initializer(options, onInitialized); function onInitialized() { viewerApp = new Autodesk.Viewing.ViewingApplication('MyViewerDiv'); viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Viewer3D); viewerApp.loadDocument(documentId, onDocumentLoaded); } function onDocumentLoaded(lmvDoc) { var modelNodes = viewerApp.bubble.search(av.BubbleNode.MODEL_NODE); // 3D designs var sheetNodes = viewerApp.bubble.search(av.BubbleNode.SHEET_NODE); // 2D designs var allNodes = modelNodes.concat(sheetNodes); if (allNodes.length) { viewerApp.selectItem(allNodes[0].data); if (allNodes.length === 1) { alert('This tutorial works best with documents with more than one viewable!'); } } else { alert('There are no viewables for the provided URN!'); } } } $(document).ready(function () { var url = window.location.href, token = getParameterByName('token', url), urn = getParameterByName('urn', url); initViewer(token, urn); }); </script> </body> </html> ,否则将匹配任何字符:

.

但是因为你不需要正则表达式,所以使用indexOf会更简单:

var contains_dot = _email.search("\\.");

答案 2 :(得分:-1)

您可以使用:string.includes(".") 这会返回truefalse

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

(x.includes(".")) ? 1 : -1

编辑:

在搜索了一下后,我碰到了: Browser support for array.include and alternatives 和别的。

使用x.indexOf(".") > -1