在字符串替换中使用正则表达式的一句话得到的字符数
Use the number of characters obtained in a sentence of the regular expression in the string replacement
我正在做一个 Markdown 解析器作为正则表达式研究的一部分,我想使用在一段表达式中获得的字符数作为字符串替换基础,例如:
# Title
## Title
第一个标题会加一个H1因为我只有一个#,第二个会加一个H2因为我有两个#.
而我会用字符的伸缩量是#正则表达式来替换一个字符串,例如:
markdown.replace ( /(\#+) *( +)/ig, "<h?></hr?>");
在哪里?将是表达式 # .
找到的数量
我的条目有些混乱,但这是我找到的解释情况的最佳方式。
你不能 "count" 使用正则表达式。
为什么不直接做
markdown.replace ( /(\#\#) *( +)/ig, "<h2></h2>")
.replace ( /(\#) *( +)/ig, "<h1></h1>");
我找到了一个简单的解决方案,replace 可以接收一个函数,所以我可以做任何我需要的事情,查看我的解决方案:
markdown = markdown.replace(/(\#+) *(.+)/ig, function(exp, n1, n2){
size = n1.length;
return "<h"+size+">"+n2+"</h"+size+">";
})
我正在做一个 Markdown 解析器作为正则表达式研究的一部分,我想使用在一段表达式中获得的字符数作为字符串替换基础,例如:
# Title
## Title
第一个标题会加一个H1因为我只有一个#,第二个会加一个H2因为我有两个#.
而我会用字符的伸缩量是#正则表达式来替换一个字符串,例如:
markdown.replace ( /(\#+) *( +)/ig, "<h?></hr?>");
在哪里?将是表达式 # .
找到的数量我的条目有些混乱,但这是我找到的解释情况的最佳方式。
你不能 "count" 使用正则表达式。
为什么不直接做
markdown.replace ( /(\#\#) *( +)/ig, "<h2></h2>")
.replace ( /(\#) *( +)/ig, "<h1></h1>");
我找到了一个简单的解决方案,replace 可以接收一个函数,所以我可以做任何我需要的事情,查看我的解决方案:
markdown = markdown.replace(/(\#+) *(.+)/ig, function(exp, n1, n2){
size = n1.length;
return "<h"+size+">"+n2+"</h"+size+">";
})