поиск обратной косой черты - PullRequest
2 голосов
/ 21 января 2012

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

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

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

Проблема в том, что я хочу, чтобы это работало и с обратной косой чертой.Странно то, что поиск 2-х обратных косых черт подряд работает, поэтому «term» выводит «ok» и «term \\» выводит «not ok»:

 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";

Надеюсь, кто-то увидит ошибку.Спасибо!

1 Ответ

3 голосов
/ 21 января 2012

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

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

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