- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到的消息有下划线:
_omgitworks_
然而,当这些消息被我们的 HTML 有线格式化程序格式化时,我们收到它们在下划线前面加上反斜杠:
\_omgitworks\_
我创建了以下正则表达式来捕获反斜杠并将其删除,以便文本标记正确:
rawInput.replace(/\\([_])/g, '$1');
但是,存在用户将文本设为斜体的极端情况。当用户utalicizes 文本,我们收到的消息没有反斜杠,但有下划线 - 我们想删除下划线。这是收到的文本看起来像:
_omgitworks_
我正在尝试设计一个正则表达式,它匹配一个反斜杠后跟一个下划线然后替换反斜杠(但不是下划线)或者如果有只是一个没有反斜杠的下划线,它只匹配下划线。
我尝试使用前瞻来实现这一点:
var regex = /\\(?=_)|_/g;
var string = '\\_omgitworks\\_'
string.replace(regex, '')
>>> "omgitworks"
但它删除了反斜杠和下划线,而不仅仅是下划线。是否有任何我忽略的前瞻性细微差别?
最佳答案
您可以使用以下正则表达式:
\\(_)|(^|[^\\])_
并替换为 $1$2
。
参见 regex demo
解释:
\\(_)
- 第一个替代匹配 \
后跟 _
(捕获组 1)|
- 或者...(^|[^\\])_
- 另一种匹配字符串开头或除 \
以外的任何字符(捕获到第 2 组)后跟下划线.在替换部分,我们使用反向引用恢复捕获。在 JS 中,失败的组总是预先填充一个空字符串,因此即使捕获组恰好为空也可以安全使用。
var re = /\\(_)|(^|[^\\])_/g;
var str = '_omgitworks_\n\\_omgitworks\\_';
var result = str.replace(re, '$1$2');
document.body.innerHTML = "<pre>"+ result + "</pre>";
关于javascript - 使用 Regex 前瞻匹配特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276579/
我有一个看起来像这样的字符串: text = "9) 9 的文本\r\n10) 10 的文本\r\n11) 11 的文本\r\n12) ...\r\n123) 123 的文本" 我正在尝试将其拆分如下
下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月
我有一个使用正则表达式回顾的 string.replace() 函数。 myString.replace(/(?
我是一名优秀的程序员,十分优秀!