JavaScript 搜索字符串错误

3

我遇到的问题是关于JavaScript中字符串搜索函数。我无法在我的字符串中找到符号“^”。例如:

string = "2^3";
n = string.search("^");
console.log(n);

在这个例子中,它会记录 i = "0"。 但 "^" 在 "1" 中。 这适用于除插入符号('^')以外的任何搜索。

有人能帮我修复这个问题吗?

4个回答

2

来自MDN

search() 方法执行一个正则表达式与当前 String 对象的匹配搜索。

str.search(regexp)

所以它期望一个正则表达式。 ^ 是正则表达式的特殊字符。你需要对其进行转义:
n = string.search("\\^");

或者简单地使用正则表达式:

n = string.search(/\^/);

谢谢!这真的很有帮助! - lenikogotthis

2
根据String.prototype.search文档,传递的第一个参数将被视为正则表达式。

regexp

一个正则表达式对象。如果传递了非RegExp对象obj,则通过使用new RegExp(obj)隐式转换为RegExp。

因此,您传递的字符串会转换为RegExp对象,并且在正则表达式中,^表示第一个字符。因此,它返回第一个字符的索引,0
您实际上需要像这样转义^\\^
var inputString = "2^3";
var n = inputString.search("\\^");
console.log(n);

输出

1

2

IT需要一个正则表达式。如果字符串中没有特殊字符,它们看起来与正则表达式相同,但是当存在特殊字符时情况并非如此。

<script>

string = "2^3";
n = string.search(/\^/);
console.log(n); //1

</script>

1

其他答案已经解释了为什么你的代码无法正常工作。然而,最简单的解决方案被忽略了:使用 .indexOf 而不是 .search

var n = inputString.indexOf("^");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接