2012-01-21 2 views
2

У меня есть JavaScript, который ищет, например. буква в строке и выводит «ОК», если письмо не там и «не в порядке», если письмо есть:поиск обратной косой черты

var term = "term"; 
var slash = "a"; 
var search =term.search(slash); 

if(search==-1) 
"ok"; 
else 
"not ok"; 

Проблема заключается в том, что я хочу, чтобы это работало с обратной косой черты тоже. Странная вещь, поиск 2 слеша ряда работ, так «термин» выходы «ОК» и «термин \\» выход «не в порядке»:

var term = "term"; 
var slash = "\\\\"; 
var search =term.search(slash); 

if(search==-1) 
"ok"; 
else 
"not ok"; 

Но поиски 1 обратный слэш не этот код дает ошибку:

var term = "term"; 
var slash = "\\"; 
var search =term.search(slash); 

if(search==-1) 
"ok"; 
else 
"not ok"; 

Надежда, кто-то видит ошибку. Благодаря!

+3

Вы заметили, что все, что вы 'term' Varaiables не содержат символы ?? –

+2

Итак, как вы ищете то, чего не существует? –

+0

Это пример, в моих примерах выход был бы «ok» ... так как var search выводит -1 (так как в термине var отсутствует обратная косая черта). – Steven

ответ

3

Существует два уровня интерпретации, связанных с регулярным выражением в JavaScript. Первый - это код строки , и вы правильно удвоили свои обратные косые черты, чтобы учесть это. Тем не менее, сама строка будет интерпретирована кодом анализа синтаксиса регулярного выражения и , что будет иметь проблему с одиночной обратной косой чертой. Другими словами, регулярное выражение, состоящее из одного обратного слэша, является синтаксической ошибкой; это просто не разрешено. Если вы хотите найти одиночную обратную косую черту, вам нужно регулярное выражение с двумя обратными косыми чертами.

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

var r1 = /\\/; /* this is OK */ 
var r2 = /\/; /* this is not OK */ 
+0

спасибо, что показал, почему произошла ошибка – Steven