小白的正则表达式的问题

sulinly 2017-12-20 01:05:49
document.getElementsByTagName('html')[0].innerHTML.replace(/.+(<\/head>).+/g,'$1');


这句话的结果应该是只显示</head>,但运行结果为何不能去掉前后呢?错在哪里?我都整晕了,我在火狐和chrome中开发模式下,百度,淘宝网页下运行都是显示出一大串字符出来,而且运行速度也很慢,求大神帮忙解惑。

又比如:
document.getElementsByTagName('html')[0].innerHTML.replace(/<head>.+<\/head>/g,"");

想把head去掉也不能得到想要的结果,这是咋回事啊?

简单的字符串却运行正常,如:
var kk="<head> iekdkkdkdiididkeidkif mjuidid </head>kkkk ";kk.replace(/.+(<\/head>).+/g,'$1');
...全文
142 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sulinly 2017-12-20
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
因为 . 是不匹配换行符\n的啊 . 是匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
谢谢大神,那么晚还奋斗在战斗第一线。谢谢!
sulinly 2017-12-20
  • 打赏
  • 举报
回复
引用 1 楼 LinBilin_ 的回复:

document.getElementsByTagName('html')[0].innerHTML.replace(/[\s\S]+(<\/head>)[\s\S]+/g,'$1');
要这么写,那是因为 . 号一般情况下是不匹配换行符的,所以你要用[\s\S]或[\d\D]这种写法来代替它去匹配所有字符
谢谢大神,那么晚还奋斗在战斗第一线。谢谢!
天际的海浪 2017-12-20
  • 打赏
  • 举报
回复
因为 . 是不匹配换行符\n的啊 . 是匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
  • 打赏
  • 举报
回复

document.getElementsByTagName('html')[0].innerHTML.replace(/[\s\S]+(<\/head>)[\s\S]+/g,'$1');
要这么写,那是因为 . 号一般情况下是不匹配换行符的,所以你要用[\s\S]或[\d\D]这种写法来代替它去匹配所有字符

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧