请教一则简单的HTML匹配的正则

代码如下:

'<pre>dadfafdaf</pre>dsdfs</pre>'.replace(/<pre>(.*)<\/pre>/ig, function(log) {
    console.log(log);
});

输出:

<pre>dadfafdaf</pre>dsdfs</pre>

请问怎样写,才能只匹配到前面这里即可

<pre>dadfafdaf</pre>

阅读 3.2k
2 个回答

非贪婪匹配。

'<pre>dadfafdaf</pre>dsdfs</pre>'.match(/<pre>(.*?)<\/pre>/ig);
-> ["<pre>dadfafdaf</pre>"]
  • (.*) 表示 0个或 多个字符,当然 "<", "/", ">" 都算字符
    local str = "<pre>dadfafdaf</pre>dsdfs</pre>"
    print(string.gsub(str,"%<pre%>(%w*)%<%/pre%>","<MATCH>"))
 output:  <MATCH>dsdfs</pre>      1
  • (%w*) 表示 字母数字, JS 用相应的替代
  • 你问题描述的具体点: 是只要第一个匹配的意思?
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进