JavaScript字符串搜索有什么问题?



为什么这个片段不生成 6?并生成 -1?

<!DOCTYPE html>
<html>
<body>
<script>
res =('{"name_^":"Ali","age":34}'.search('_^'));
document.body.innerHTML = res ;
</script>
</body>
</html>

search需要一个正则表达式。您尝试执行的操作通常可以通过indexOf解决 - 但是,以下内容将起作用:

let res ='{"name_^":"Ali","age":34}'.search(/_^/);
console.log(res);

或者让它变得好

let res ='{"name_^":"Ali","age":34}'.indexOf('_^');
console.log(res);

只需转义字符,这样它就不会被读作正则表达式,而是被读作一个简单的字符:
search("_\^")
这给出了6而不是-1

您正在寻找 indexOf 函数:

'{"name_^":"Ali","age":34}'.indexOf('_^')

返回 6 (搜索使用正则表达式,^ 在正则表达式中具有特殊含义 - -1 只是表示找不到字符串(

它不起作用,因为正则表达式中的 char ^ 具有含义,并且 js 函数搜索将您的输入作为正则表达式。

如果你转义 ^ 字符它有效:

<!DOCTYPE html>
<html>
<body>
<script>
res =('{"name_^":"Ali","age":34}'.search('_\^'));
document.body.innerHTML = res ;
</script>
</body>
</html>

最新更新