[\b]
显然匹配退格字符。我无法理解字符串如何包含退格字符。有人可以给我一个具体的例子来说明如何使用它吗?非常感谢。
3 回答
虽然所有其他一般都是正确的(即\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 独有的,而是在大多数正则表达式中都以这种方式解释。
进一步阅读:
在正则表达式的上下文中(字符类之外)\b
并不意味着退格;它的意思是“单词边界”。它有很多用途。例如,
/\bword\b/
将匹配some word
但不匹配someword
。
正如m.butter指出的那样,如果将其放在字符类中,则可以使用它来匹配退格字符。例如:
var input = "this is a \btest.";
/[\b]/.test(input); // true
实际示例:我们使用我们自己的协议在客户端之间(通过托管服务器)传递 \b 以允许用户在他们已经发送的文本上退格。在一种类型的客户端(这个是基于网络浏览器的,但其他的不是),我检查退格键命中(e.which==8 // Ref. https://api.jquery.com/keydown / ) 并发送 '\b'; 其他客户端处理这个(可能自动)。当我的网络客户端收到 \b 时,我的代码必须适当地处理它。