Skip to content

Commit 2bb46b9

Browse files
author
Jiang Shang
committed
修复 link 多次匹配
1 parent 2116942 commit 2bb46b9

File tree

4 files changed

+16
-34
lines changed

4 files changed

+16
-34
lines changed

dist/Parser.js

+7-11
Original file line numberDiff line numberDiff line change
@@ -274,14 +274,14 @@ var Parser = (function () {
274274
});
275275

276276
// image
277-
var imagePattern1 = /!\[((?:[^\]]|\]|\[)*?)\]\(((?:[^\)]|\)|\()+?)\)/;
277+
var imagePattern1 = /!\[((?:[^\]]|\]|\[)*?)\]\(((?:[^\)]|\)|\()+?)\)/g;
278278
text = text.replace(imagePattern1, function (match, p1, p2) {
279279
var escaped = _this.escapeBracket(p1);
280280
var url = _this.escapeBracket(p2);
281281
return _this.makeHolder('<img src="' + url + '" alt="' + escaped + '" title="' + escaped + '">');
282282
});
283283

284-
var imagePattern2 = /!\[((?:[^\]]|\]|\[)*?)\]\[((?:[^\]]|\]|\[)+?)\]/;
284+
var imagePattern2 = /!\[((?:[^\]]|\]|\[)*?)\]\[((?:[^\]]|\]|\[)+?)\]/g;
285285
text = text.replace(imagePattern2, function (match, p1, p2) {
286286
var escaped = _this.escapeBracket(p1);
287287
var result = '';
@@ -294,14 +294,14 @@ var Parser = (function () {
294294
});
295295

296296
// link
297-
var linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/;
297+
var linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/g;
298298
text = text.replace(linkPattern1, function (match, p1, p2) {
299299
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
300300
var url = _this.escapeBracket(p2);
301301
return _this.makeHolder('<a href="' + url + '">' + escaped + '</a>');
302302
});
303303

304-
var linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/;
304+
var linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/g;
305305
text = text.replace(linkPattern2, function (match, p1, p2) {
306306
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
307307

@@ -316,13 +316,6 @@ var Parser = (function () {
316316
});
317317

318318
// strong and em and some fuck
319-
// text = text.replace(/(\*{3})(.+?)\1/g, "<strong><em>$2</em></strong>")
320-
// text = text.replace(/(\*{2})(.+?)\1/g, "<strong>$2</strong>")
321-
// text = text.replace(/(\*)(.+?)\1/g, "<em>$2</em>")
322-
// text = text.replace(/(\s+)(_{3})(.+?)\2(\s+)/g, "$1<strong><em>$3</em></strong>$4")
323-
// text = text.replace(/(\s+)(_{2})(.+?)\2(\s+)/g, "$1<strong>$3</strong>$4")
324-
// text = text.replace(/(\s+)(_)(.+?)\2(\s+)/g, "$1<em>$3</em>$4")
325-
// text = text.replace(/(~{2})(.+?)\1/g, "<del>$2</del>")
326319
text = this.parseInlineCallback(text);
327320
text = text.replace(/<([_a-z0-9-\.\+]+@[^@]+\.[a-z]{2,})>/ig, "<a href=\"mailto:$1\">$1</a>");
328321

@@ -1259,4 +1252,7 @@ var Parser = (function () {
12591252
})();
12601253

12611254
exports['default'] = Parser;
1255+
1256+
var parser = new Parser();
1257+
console.log(parser.makeHtml('[Genymotion](https://www.genymotion.com/)是。[Genymotion](https://www.genymotion.com/) [VirtualBox](https://www.virtualbox.org/)富的[付费版](https://shop.genymotion.com/index.php?controller=order-opc)'));
12621258
module.exports = exports['default'];

hyperdown.js

+4-11
Original file line numberDiff line numberDiff line change
@@ -320,14 +320,14 @@
320320
});
321321

322322
// image
323-
var imagePattern1 = /!\[((?:[^\]]|\]|\[)*?)\]\(((?:[^\)]|\)|\()+?)\)/;
323+
var imagePattern1 = /!\[((?:[^\]]|\]|\[)*?)\]\(((?:[^\)]|\)|\()+?)\)/g;
324324
text = text.replace(imagePattern1, function (match, p1, p2) {
325325
var escaped = _this.escapeBracket(p1);
326326
var url = _this.escapeBracket(p2);
327327
return _this.makeHolder('<img src="' + url + '" alt="' + escaped + '" title="' + escaped + '">');
328328
});
329329

330-
var imagePattern2 = /!\[((?:[^\]]|\]|\[)*?)\]\[((?:[^\]]|\]|\[)+?)\]/;
330+
var imagePattern2 = /!\[((?:[^\]]|\]|\[)*?)\]\[((?:[^\]]|\]|\[)+?)\]/g;
331331
text = text.replace(imagePattern2, function (match, p1, p2) {
332332
var escaped = _this.escapeBracket(p1);
333333
var result = '';
@@ -340,14 +340,14 @@
340340
});
341341

342342
// link
343-
var linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/;
343+
var linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/g;
344344
text = text.replace(linkPattern1, function (match, p1, p2) {
345345
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
346346
var url = _this.escapeBracket(p2);
347347
return _this.makeHolder('<a href="' + url + '">' + escaped + '</a>');
348348
});
349349

350-
var linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/;
350+
var linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/g;
351351
text = text.replace(linkPattern2, function (match, p1, p2) {
352352
var escaped = _this.parseInline(_this.escapeBracket(p1), '', false);
353353

@@ -362,13 +362,6 @@
362362
});
363363

364364
// strong and em and some fuck
365-
// text = text.replace(/(\*{3})(.+?)\1/g, "<strong><em>$2</em></strong>")
366-
// text = text.replace(/(\*{2})(.+?)\1/g, "<strong>$2</strong>")
367-
// text = text.replace(/(\*)(.+?)\1/g, "<em>$2</em>")
368-
// text = text.replace(/(\s+)(_{3})(.+?)\2(\s+)/g, "$1<strong><em>$3</em></strong>$4")
369-
// text = text.replace(/(\s+)(_{2})(.+?)\2(\s+)/g, "$1<strong>$3</strong>$4")
370-
// text = text.replace(/(\s+)(_)(.+?)\2(\s+)/g, "$1<em>$3</em>$4")
371-
// text = text.replace(/(~{2})(.+?)\1/g, "<del>$2</del>")
372365
text = this.parseInlineCallback(text);
373366
text = text.replace(/<([_a-z0-9-\.\+]+@[^@]+\.[a-z]{2,})>/ig, "<a href=\"mailto:$1\">$1</a>");
374367

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "Markdown解析器",
44
"repository": "https://github.com/SegmentFault/HyperDown.js",
55
"license": "BSD-4-Clause",
6-
"version": "0.1.6",
6+
"version": "0.1.7",
77
"devDependencies": {
88
"babel": "^5.8.22",
99
"babel-core": "^5.8.22",

src/Parser.js

+4-11
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,14 @@ export default class Parser {
217217
})
218218

219219
// image
220-
let imagePattern1 = /!\[((?:[^\]]|\]|\[)*?)\]\(((?:[^\)]|\)|\()+?)\)/
220+
let imagePattern1 = /!\[((?:[^\]]|\]|\[)*?)\]\(((?:[^\)]|\)|\()+?)\)/g
221221
text = text.replace(imagePattern1, (match, p1, p2) => {
222222
let escaped = _this.escapeBracket(p1)
223223
let url = _this.escapeBracket(p2)
224224
return _this.makeHolder(`<img src="${url}" alt="${escaped}" title="${escaped}">`)
225225
})
226226

227-
let imagePattern2 = /!\[((?:[^\]]|\]|\[)*?)\]\[((?:[^\]]|\]|\[)+?)\]/
227+
let imagePattern2 = /!\[((?:[^\]]|\]|\[)*?)\]\[((?:[^\]]|\]|\[)+?)\]/g
228228
text = text.replace(imagePattern2, (match, p1, p2) => {
229229
let escaped = _this.escapeBracket(p1)
230230
let result = ''
@@ -237,14 +237,14 @@ export default class Parser {
237237
})
238238

239239
// link
240-
let linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/
240+
let linkPattern1 = /\[((?:[^\]]|\]|\[)+?)\]\(((?:[^\)]|\)|\()+?)\)/g
241241
text = text.replace(linkPattern1, (match, p1, p2) => {
242242
let escaped = _this.parseInline(_this.escapeBracket(p1), '', false)
243243
let url = _this.escapeBracket(p2)
244244
return _this.makeHolder(`<a href="${url}">${escaped}</a>`)
245245
})
246246

247-
let linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/
247+
let linkPattern2 = /\[((?:[^\]]|\]|\[)+?)\]\[((?:[^\]]|\]|\[)+?)\]/g
248248
text = text.replace(linkPattern2, (match, p1, p2) => {
249249
let escaped = _this.parseInline(_this.escapeBracket(p1), '', false)
250250

@@ -261,13 +261,6 @@ export default class Parser {
261261
})
262262

263263
// strong and em and some fuck
264-
// text = text.replace(/(\*{3})(.+?)\1/g, "<strong><em>$2</em></strong>")
265-
// text = text.replace(/(\*{2})(.+?)\1/g, "<strong>$2</strong>")
266-
// text = text.replace(/(\*)(.+?)\1/g, "<em>$2</em>")
267-
// text = text.replace(/(\s+)(_{3})(.+?)\2(\s+)/g, "$1<strong><em>$3</em></strong>$4")
268-
// text = text.replace(/(\s+)(_{2})(.+?)\2(\s+)/g, "$1<strong>$3</strong>$4")
269-
// text = text.replace(/(\s+)(_)(.+?)\2(\s+)/g, "$1<em>$3</em>$4")
270-
// text = text.replace(/(~{2})(.+?)\1/g, "<del>$2</del>")
271264
text = this.parseInlineCallback(text)
272265
text = text.replace(/<([_a-z0-9-\.\+]+@[^@]+\.[a-z]{2,})>/ig, "<a href=\"mailto:$1\">$1</a>")
273266

0 commit comments

Comments
 (0)