用正则表达式

时间:2017-10-30 13:42:13

标签: javascript regex markdown

我有以下对象:

{
    "_id": "59f6f931d20f73000410bbd8",
    "title": "Test",
    "salary": "1337",
    "maxSalary": "4000",
    "minSalary": "1500",
    "introText": "Lorem __Ipsum__ Sit Dolor Amet",
    "expectText": "Lorem Ipsum Sit _Dolor__ Amet Est __Circa__."
}

在我的Vue.js应用程序中,我实现了vue-markdown来渲染标记以显示粗体和草书字样。

我现在要实现的是,为每个__word __解析对象,并用正则表达式替换为word。

到目前为止我得到了什么:

let objJson = JSON.stringify(obj);
objJson = objJson.replace(/\_/g, '');
let jobXML = JSON.parse(objJson);
res.send(jobXML);

所以这是我的解决方法,删除" __"字符,但我没有找到任何其他资源,解释如何用我的HTML实体替换它。

我的解决方法是必需的,因为我使用/jobs来显示我的vue应用程序中的所有作业(可以使用降价),但我还有另一个不能使用" __"但需要HTMl实体。

3 个答案:

答案 0 :(得分:1)

这是您需要在替换电话中使用的 regex

str.replace(/_{1,}([ a-z0-9]+)_{1,}/img, "<strong>$1</strong>")

<强>演示:

&#13;
&#13;
var str = "Lorem Ipsum Sit _Dolor__ Amet Est __Circa__.";

console.log(str.replace(/_{1,}([ a-z0-9]+)_{1,}/img, "<strong>$1</strong>"));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

可能您可以尝试以下一种方法:

str.replace(/__(.*?)__((_+|\W+|$))/g, '<strong>$1</strong>$2')

答案 2 :(得分:0)

我认为我自己有一个可行的解决方案:

let objJson = JSON.stringify(obj);
let regexBold = /\_\_(\S(.*?\S)?)\_\_/gm;
let regexItalic = /\_(\S(.*?\S)?)\_/gm;
objJson = objJson.replace(regexBold, '<strong>$1</strong>');
objJson = objJson.replace(regexItalic, '<i>$1</i>');
let jobXML = JSON.parse(objJson);
res.send(jobXML);

对于那个问题,看到其他/更好的方法还是很高兴的!