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

时间:2017-08-18 11:38:40

标签: javascript string

为什么此代码段不会生成6?并生成-1?

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

4 个答案:

答案 0 :(得分:1)

search采用正则表达式。您尝试做的事情通常由indexOf解决 - 但是,下面的内容可以解决:

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

或者做得好

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

答案 1 :(得分:1)

只是逃避角色,以便它不会被视为正则表达式而是作为一个简单的字符:
search("_\\^")
这会提供6而不是-1

答案 2 :(得分:0)

您正在寻找indexOf函数:

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

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

答案 3 :(得分:0)

它没有用,因为正则表达式中的char ^有意义而js函数搜索将你的输入作为正则表达式。

如果你逃脱^ char它的工作原理:

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