我正在尝试搜索字符串以查看它是否包含句点"。" 我将输入字段的值加载到变量中,然后对该变量运行javascript字符串search()方法。
var _email = document.getElementById(Input).value;
var contains_dot = _email.search(".");
如果在字符串中找不到句点或者表示匹配位置的数字,则contains_dot变量应返回-1。
可悲的是......变量' contains_dot'每次只返回0。 难道我做错了什么? ..有更好的方法吗?
请注意:
contains_dot = _email.indexOf(".");
不适用于这个问题,因为无论输入什么,它都会返回0。
答案 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(".")
这会返回true
或false
如果您想要1
或-1
,只需使用:
(x.includes(".")) ? 1 : -1
编辑:
在搜索了一下后,我碰到了: Browser support for array.include and alternatives 和别的。
使用x.indexOf(".") > -1