javascript正则表达式:`foo` - > ** ** FOO?

时间:2014-02-06 07:03:53

标签: javascript regex

基本上,我为我自己的网站破解了Markdown引擎。

现在,我正在尝试转换用单个`

包装的任何字符串
`foo` 

 **foo**

使用regex到目前为止,我能想到的只有

    var data = data0.replace(/`.*`/g, '...');

显然,这对我的意图不起作用。

和Markdown也有

```  ```

格式,我希望这一点不受影响 - 从正则表达式匹配中排除。

你能告诉正则表达式是什么吗?

谢谢。

3 个答案:

答案 0 :(得分:1)

由于JavaScript不支持lookbehind断言,我们需要使用一个小技巧:

result = subject.replace(/(^|[^`])`([^`]*)`(?!`)/g, '$1**$2**');

live on regex101.com

<强>说明:

(^|[^`]) # 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**');

jsfiddle

regex101 demo

由于JS不具有负面的背后隐藏,因此您必须使用(^|[^].|.[^])之类的内容来阻止在第三个].|.[^之前匹配``

`然后阻止在{4} (?!``)之后匹配``

答案 2 :(得分:-2)

这是我对一个简单,干净的正则表达式的尝试:

正则表达式字符串

`\b(.*?)\b`(?!`)

替换字符串

**$1**

在线演示

Regex101