关于正则表达式(JS)正回顾后发问题

我写了一个简单的正则表达式,想匹配标题中的文本,Html如下:
<h1>you are my little princess!</h1>
当前我想写一个最基本的正则匹配,提取文本 you are my little princess!
我写的正则表达式如下:
(?<=<h1>)[\s\S]*?(?=</h1>)

但是我发现(?<=<h1>)无法匹配,我搜索的很多关于回顾后发匹配的文章,见别人也是这样写的。
但是我现在这种写法,我在在线的正则表达式站点测试(http://tool.chinaz.com/regex/),发现无法匹配((?=</h1>) 可以匹配)。

我实在是找不到原因,希望有懂正则表达式的前辈可以帮忙,解决我的疑问~
非常感谢!

阅读 2.5k
2 个回答
  1. 正则表达式有很多种方言,每个方言下面的实现并不相同,就这个问题而言的话,就是javascript确实并不支持这种反向匹配的语法

  2. 你的正则表达式本身也还有bug,匹配 </h1> 的 / 没有转义,应该是 <\/h1>

  3. 这个正则表达式写的也太繁琐了,给你个简单的(并且也更通用,在不同语言上)

var re = /<h1>(.*?)<\/h1>/;
var result = "<h1>you are my little princess!</h1>".match(re);
console.log(result[1]);

javascript目前不支持反向预查

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题