regex [\B]退格键正则表达式有什么用?

rwqw0loc  于 2023-01-18  发布在  其他
关注(0)|答案(3)|浏览(155)

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

dkqlctbz

dkqlctbz1#

虽然其他的都是对的(\b是一个单词边界),但是\b*****表示字符类内部的退格:

[\b]

这确实可以匹配一个退格符。它只是一个可以出现在文本中的ASCII控制字符(八进制的ASCII码8或10)。我想它主要是出于传统的原因,用来添加变音符号(例如,你可以做a,退格符,´,以获得á)。今天,这些都已经被Unicode组合符号所取代。
一个包含退格键的字符串最终看起来会是什么样子取决于呈现它的软件。如果退格键后面跟着新的字符,控制台可能仍然会向后移动光标并覆盖那里的内容。要看到这一点,启动一个交互式脚本控制台(如果你想在JavaScript中尝试,就像node.js),并运行

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

注意,如果你省略了def,你只得到abc,因为退格键本身并不删除任何东西,它只是向后移动光标。
另一方面,你的浏览器可能只是在输入字段中忽略它。例如, checkout 一个Unicode converter,在左下方的输入中输入JavaScript输入abc\b\bdef,点击“转换”,“字符”输出将不会删除bc
顺便说一下,\b在字符类中是一个退格键并不是JavaScript所独有的,但在大多数正则表达式中都是这样解释的。
进一步阅读:

x4shl7ld

x4shl7ld2#

在正则表达式的上下文中(字符类之外),\b不表示退格;它的意思是“单词边界”。There are lots of uses for it。例如,

/\bword\b/

将匹配some word但不匹配someword
正如 m.butter 指出的,如果你把它放在一个字符类中,你可以用它来匹配一个退格键字符,例如:

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

n3ipq98p3#

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

相关问题