[\b]
соответствует символу обратного пространства. Я не могу понять, как строка может содержать символ обратного пространства.
Может ли кто-нибудь дать мне конкретный пример того, как это будет использоваться? Большое спасибо.
Какое использование регулярного выражения [\ b] backspace?
Ответ 1
В то время как все остальные в целом правы (что \b
является границей слова), \b
действительно означает возврат на задний план внутри классов символов:
[\b]
Это действительно будет соответствовать символу возврата. Это просто контрольный символ ASCII, который может появляться в тексте (код ASCII 8 или 10 в восьмеричном). Я предполагаю, что это в основном используется для устаревших причин, чтобы добавить диакритические знаки (например, вы могли бы сделать, забой, a
´
, чтобы получить á
). Сегодня они в основном были заменены знаками объединения Unicode.
Как в конечном итоге будет выглядеть строка, содержащая возврат, зависит от программного обеспечения, которое ее отображает. Консоли, вероятно, по-прежнему будут перемещать курсор назад и перезаписывать то, что было, если за пробелом следуют новые другие символы. Чтобы увидеть это, запустите интерактивную консоль сценариев (например, node.js, если вы хотите попробовать это в JavaScript) и запустите
> console.log("abc\b\bdef")
adef
Обратите внимание, что, если вы опустите def
, вы просто получите abc
, потому что само по себе backspace ничего не стирает. Он только перемещает курсор назад.
С другой стороны, ваш браузер может просто игнорировать его в поле ввода. Например, проверьте конвертер Unicode, введите ввод JavaScript abc\b\bdef
в левом нижнем вводе, нажмите "преобразовать", и вывод "Символы" не bc
.
Между прочим, \b
являясь символом возврата в символьных классах, не является уникальным для JavaScript, но интерпретируется таким образом в большинстве разновидностей регулярных выражений.
Дальнейшее чтение:
Ответ 2
В контексте регулярного выражения (вне символьного класса) \b
не означает возврат на одну позицию; это означает "граница слова". Есть много применений для этого. Например,
/\bword\b/
будет соответствовать some word
- someword
some word
, но не someword
.
Как указывает m.butter, вы можете использовать его для сопоставления с символом возврата, если поместите его в класс символов. Например:
var input = "this is a \btest.";
/[\b]/.test(input); // true
Ответ 3
Пример реального мира: мы передаем \b между клиентами (через размещенный сервер), используя наш собственный протокол, чтобы позволить пользователям переходить через текст, который они уже отправили. В одном типе клиента (это один из основанных на веб-браузере, но других нет), я проверяю на попадание в backspace-key (e.which == 8//Ref. https://api.jquery.com/keydown/) и отправьте '\ b'; другие клиенты обрабатывают это (возможно, автоматически). Когда мой веб-клиент получает \b, мой код должен обрабатывать его соответствующим образом.