Javascript 什么';[\b]退格正则表达式的用法是什么?

Javascript 什么';[\b]退格正则表达式的用法是什么?,javascript,regex,Javascript,Regex,[\b]显然与退格字符匹配。我不明白字符串怎么会包含退格字符。 有人能给我一个具体的例子,说明如何使用它吗?非常感谢。在正则表达式的上下文中(字符类之外)\b并不意味着退格;它的意思是“单词边界”。比如说, /\bword\b/ 将匹配someword,但不匹配someword 正如m.butter所指出的,如果将其放置在字符类中,则可以使用它来匹配退格字符。例如: var input = "this is a \btest."; /[\b]/.test(input); // true 虽然

[\b]
显然与退格字符匹配。我不明白字符串怎么会包含退格字符。
有人能给我一个具体的例子,说明如何使用它吗?非常感谢。

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

/\bword\b/
将匹配
someword
,但不匹配
someword

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

var input = "this is a \btest.";
/[\b]/.test(input); // true

虽然所有其他的都是正确的(即
\b
是一个单词边界),
\b
是否表示字符类中的退格:

[\b]
这将确实匹配退格字符。它只是一个ASCII控制字符,可以显示在文本中(ASCII代码8,或八进制中的10)。我想它主要是为了传统的原因而使用的,添加变音符号(例如,你可以做
a
,退格,
'
,以获得
á
)。今天,这些标记大多已被Unicode组合标记所取代

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

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

另一方面,您的浏览器可能只是在输入字段中忽略它。例如,签出a,在左下角的输入中输入JavaScript输入
abc\b\bdef
,点击“转换”,那么“字符”输出将不会删除
bc

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

进一步阅读:


真实世界示例:我们使用自己的协议在客户端之间传递\b(通过托管服务器),以允许用户对已发送的文本进行退格。在一种类型的客户端(这一种是基于web浏览器的,而其他的则不是),我检查是否有退格键命中(e.which==8//Ref.)并发送“\b”;其他客户机处理这个问题(可能是自动的)。当我的web客户端接收到\b时,我的代码必须正确处理它。

@m.buettner:是的,这是唯一的情况。退格字符是
\u0008
@elclanrs对不起,我打错了:问题已编辑。我是新来的。我的意思是[\b],退格字符。这方面的一个实际例子是什么。谢谢比如说,
var输入
通过
向我们发送。输入框中的文本(带有该退格)是什么样子的?Thanks@thomas类似于
Isuppose@thomas当我在chrome的开发者工具中检查结果时,我看到
。我相信里面确实有一个
\b
字符,但可能没有正确显示。有关更多详细信息,请参阅此答案:@BlackPlanet谢谢,我一直在搜索类似的内容,但无法快速找到任何好的来源。接下来的挑战是如何构建一个奇异(现代)的边缘的情况下,你真的想捕捉这样一个角色+1谢谢,当我看到这个时,我正在更新我的答案以反映您的评论。@blackplant Neat!谢谢当然,字符串可以包含一个退格“字符”——在这里用引号括起来,因为控制代码会更精确。但是它是ASCII(因此也是UTF-8)的一部分,所以它当然可以出现在使用这些编码的任何地方。这个字符串的使用环境将决定它的用途——这是另一个问题。将其放入HTML或从JS发出警报/记录,很可能根本没有任何可见效果–但例如,此字符串发送到的非常旧的(针形)打印机可以还原一个字符位置,并在其上打印以下字符…是的,已经看到了您的答案。谢谢你的澄清。
> console.log("abc\b\bdef")
adef