【问题标题】:JavaScript Search string errorJavaScript 搜索字符串错误
【发布时间】:2014-02-09 06:58:25
【问题描述】:
我的问题在于 javascript 搜索字符串函数。我无法在我的字符串中找到符号“^”。
例如:
string = "2^3";
n = string.search("^");
console.log(n);
在此示例中,它将记录 i = "0"。
但是“^”在“1”中。
这适用于除插入符号 ('^') 之外的任何其他搜索。
谁能帮我解决这个问题?
【问题讨论】:
标签:
javascript
string
search
caret
【解决方案1】:
来自MDN
search() 方法执行在 regular 之间的匹配搜索
表达式和这个String对象。
str.search(regexp)
所以它需要一个正则表达式。 ^ 是一个正则表达式特殊字符。你需要逃避它:
n = string.search("\\^");
或者简单地使用正则表达式:
n = string.search(/\^/);
【解决方案2】:
根据String.prototype.search 文档,传递的第一个参数将被视为正则表达式。
正则表达式
一个正则表达式对象。如果一个非正则表达式对象 obj 是
通过,它通过使用 new 隐式转换为 RegExp
正则表达式(obj)。
因此,您传递的字符串被转换为RegExp 对象和正则表达式中的^,表示第一个字符。因此,它返回第一个字符的索引,0。
你实际上必须像这样\\^ 逃避^
var inputString = "2^3";
var n = inputString.search("\\^");
console.log(n);
输出
1
【解决方案3】:
它需要一个正则表达式。没有特殊字符的字符串看起来和正则表达式一样,但是当有特殊字符时就不是这样了。
<script>
string = "2^3";
n = string.search(/\^/);
console.log(n); //1
</script>
【解决方案4】:
其他答案已经解释了为什么您的代码不起作用。然而缺少最简单的解决方案:使用.indexOf 而不是.search:
var n = inputString.indexOf("^");