基本上,我为我自己的网站破解了Markdown引擎。
现在,我正在尝试转换用单个`
包装的任何字符串`foo`
到
**foo**
使用regex
到目前为止,我能想到的只有
var data = data0.replace(/`.*`/g, '...');
显然,这对我的意图不起作用。
和Markdown也有
``` ```
格式,我希望这一点不受影响 - 从正则表达式匹配中排除。
你能告诉正则表达式是什么吗?
谢谢。
答案 0 :(得分:1)
由于JavaScript不支持lookbehind断言,我们需要使用一个小技巧:
result = subject.replace(/(^|[^`])`([^`]*)`(?!`)/g, '$1**$2**');
<强>说明:强>
(^|[^`]) # Match the start of the string or any non-` character.
` # Match `
([^`]*) # Match any number of non-` characters
` # Match `
(?!`) # Assert that no ` follows
答案 1 :(得分:1)
你可以尝试类似的东西:
var data = data0.replace(/(^|[^`].|.[^`])`([^`]+)`(?!``)/g, '$1**$2**');
由于JS不具有负面的背后隐藏,因此您必须使用(^|[^
之类的内容来阻止在第三个].|.[^
])].|.[^
之前匹配``
。
`
然后阻止在{4} (?!``)
之后匹配``
。
答案 2 :(得分:-2)