47

[\b]显然匹配退格字符。我无法理解字符串如何包含退格字符。有人可以给我一个具体的例子来说明如何使用它吗?非常感谢。

4

3 回答 3

47

虽然所有其他一般都是正确的(即\b单词边界),\b 但确实意味着字符类中的退格:

[\b]

这确实会匹配退格字符。它只是一个可以出现在文本中的 ASCII 控制字符(ASCII 代码 8 或八进制的 10)。我想它主要用于遗留原因,添加变音符号(例如你可以做a,退格´,,来得到á)。今天,这些已大部分被 Unicode 组合标记所取代。

包含退格的字符串最终的外观取决于呈现它的软件。如果退格后面跟着新的其他字符,控制台可能仍会将光标向后移动并覆盖那里的内容。要看到这一点,请启动一个交互式脚本控制台(如果你想在 JavaScript 中尝试,比如 node.js),然后运行

> console.log("abc\b\bdef")
adef

请注意,如果您省略了def,您只会得到abc,因为退格本身不会删除任何内容。它只会将光标向后移动。

另一方面,您的浏览器可能只是在输入字段中忽略它。例如,检查一个Unicode 转换器,在左下角输入 JavaScript 输入abc\b\bdef,点击“转换”,“字符”输出不会被bc擦除。

顺便说一句\b,在字符类中作为退格键并不是 JavaScript 独有的,而是在大多数正则表达式中都以这种方式解释。

进一步阅读:

于 2013-07-03T01:01:43.620 回答
12

在正则表达式的上下文中(字符类之外)\b并不意味着退格;它的意思是“单词边界”。它有很多用途。例如,

/\bword\b/

将匹配some word但不匹配someword

正如m.butter指出的那样,如果将其放在字符类中,则可以使用它来匹配退格字符。例如:

var input = "this is a \btest.";
/[\b]/.test(input); // true
于 2013-07-03T00:56:58.347 回答
1

实际示例:我们使用我们自己的协议在客户端之间(通过托管服务器)传递 \b 以允许用户在他们已经发送的文本上退格。在一种类型的客户端(这个是基于网络浏览器的,但其他的不是),我检查退格键命中(e.which==8 // Ref. https://api.jquery.com/keydown / ) 并发送 '\b'; 其他客户端处理这个(可能自动)。当我的网络客户端收到 \b 时,我的代码必须适当地处理它。

于 2017-10-04T09:56:14.420 回答