2014-01-20 3 views
3

Моя проблема связана с функцией строки поиска javascript. Я не могу найти символ «^» в моей строке. Например:JavaScript Ошибка строки поиска

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

В этом примере было бы войти я = "0". Но «^» находится в «1». Это работает с любым другим поиском, кроме каретки ('^').

Может ли кто-нибудь помочь мне исправить это?

ответ

2

От MDN

search() метод выполняет поиск совпадения между регулярным выражением и этого String объекта.

str.search(regexp) 

Так что ожидает регулярное выражение. ^ - специальный символ регулярного выражения. Вы должны избежать этого:

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

Или просто использовать регулярные выражения:

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

Спасибо! Это было действительно полезно! – lenikogotthis

2

В соответствии с String.prototype.search документов, первый параметр, переданным будет рассматриваться как регулярное выражение.

регулярное_выражение

объект регулярного выражения. Если объект obj без RegExp равен , он неявно преобразован в RegExp с использованием нового RegExp (obj).

Таким образом, строка, которую вы передаете, преобразуется в RegExp объекта и ^ в регулярном выражении означает, что первый символ. Таким образом, он возвращает индекс первого символа, 0.

Вы на самом деле должны бежать ^ как этот \\^

var inputString = "2^3"; 
var n = inputString.search("\\^"); 
console.log(n); 

Выход

1 
2

хочет регулярное выражение. строки без специальных символов в них выглядят так же, как регулярное выражение, но это не тот случай, когда есть специальные символы.

<script> 

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

</script> 
1

Почему ваш код не работает, уже объяснено другими ответами. Но самое простое решение отсутствует: Используйте .indexOf вместо .search:

var n = inputString.indexOf("^"); 
Смежные вопросы