从markdown到HTML发生了啥,其实啥也没有发生。不信,望下看!
认识这个转换过程,先聊一聊exec方法。
RegExp.prototype.exec方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。
如果匹配成功,exec() 方法返回一个数组(包含额外的属性 index 和 input),并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应正则表达式内捕获括号里匹配成功的文本。如果匹配失败,exec() 方法返回 null,并将 lastIndex 重置为 0。
返回值是数组,结构如下
第一个索引[0]指匹配的全部字符串
存在[1]…[n]索引指括号中的分组捕获
index 匹配到的字符位于原始字符串的基于0的索引值
input 原始字符串
举个例子:
let reg = RegExp('foo*','g');
let str = 'table football, foosball';
let result = null;
while ((result = reg.exec(str)) !== null) {
console.log(result);
}
// => ['foo', index: 6, input: 'table football, foosball', groups: undefined]
// => ['foo', index: 16, input: 'table football, foosball', groups: undefined]
回到正题,markdown to html 发生了啥,估计你会猜用到词法语法分析,嘿嘿,想多啦,这里用到了只是正则,惊讶不惊讶!