经典JavaScript正则表达式实战(附pdf)(8)


<script type="text/javascript">
function replaceReg(reg,str){
return str.replace(reg,function(m){return '<a href="'https://www.jb51.net/article/+m+'">'https://www.jb51.net/article/+m+'</a>';})
}
var reg = /http:\/\/[\w-]*(\.[\w-]*)+/ig;
var str = '将一个用户输入的一段文字中的url替换成可以点击的link地址。\
测试一下:紧接着中文,还有 \
is very good!!最后在看看带.cn的:呵呵。';
document.write(replaceReg(reg,str)+'<br />');
</script>


从HTML代码段删除指定标签极其内容
来源:关于正则的问题

在一段代码中去除<script ...... /script>, <head>...</head>,<%.....%>等代码块

隆的正则:

/<(script|meta|%)[\s\S]*?\/(script|meta|%)>/试了一下,匹配如下文本正常:

复制代码 代码如下:


<script type="text/javascript">
我是要被删除的脚本
</script>


哎。就剩下我了。但是,如果使用类似的正则:

/<(script|head|%)[\s\S]*?\/(script|head|%)>/ig

匹配有嵌套的标签:

复制代码 代码如下:


<head>
<script type="text/javascript">
我是要被删除的脚本
</script>
</head>


哎。就剩下我了。实际匹配的内容是:

复制代码 代码如下:


<head>
<script type="text/javascript">
我是要被删除的脚本
</script>


这是因为[\s\S]*?里的非贪婪造成的。可以使用JavaScript正则里的反向引用来解决这个问题,如果起始标签匹配了head,那么结束标签也必须是head。最后的正则如下:

/<(script|head|%)[\s\S]*?\/\1>/ig用正则给文本分段
来源:怎样用正则分段落

原代码:[title]标题一[/title]内容一232323sdfga [title]标题二[/title]内容二2232323 [title]标题三[/title]内容三2232323

要把文本分段成如下格式:
一、[title]标题一[/title]内容一232323sdfga
二、[title]标题二[/title]内容二2232323
三、[title]标题三[/title]内容三2232323

只要用正则匹配title就可以了,所以正则比较简单

/\[title\]/ig
至于开始的的汉字序号,只要一个数组就解决了,最终代码如下:

复制代码 代码如下:


<script type="text/javascript">
function replaceReg(reg,str){
var mark =0;
return str.replace(reg,function(m){mark++;return '<br />'+arr[mark]+'、'+m;})
}
var arr = ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
var reg = /\[title\]/ig;
var str = '[title]标题一[/title]内容一232323sdfga \
[title]标题二[/title]内容二2232323 [title]标题三[/title]内容三2232323';
document.write(replaceReg(reg,str)+'<br />');
</script>


转换源代码中的标签
来源:一个正则上的问题

将代码中的HTML标签img转换为[img]url[/img]。

/<img(?:\s*\w*?\s*=\s*"https://www.jb51.net/article/.+?")*?\s*src\s*=\s*"(.+?)"(?:\s*\w*?\s*=\s*"https://www.jb51.net/article/.+?")*\s*>/ig

这段正则和匹配链接标签的正则基本一样,修改如下,标签名img,没有结束标签而是>结束。

测试代码如下:

复制代码 代码如下:


<script type="text/javascript">
function replaceReg(reg,str){
return str.replace(reg,'[img]$1[/img]')
}
var reg =
/<img(?:\s*\w*?\s*=\s*"https://www.jb51.net/article/.+?")*?\s*src\s*=\s*"(.+?)"(?:\s*\w*?\s*=\s*"https://www.jb51.net/article/.+?")*\s*>/ig;
var str = '我就是传说中的图片了<img src="https://www.jb51.net/article/URL">哎。';
document.write(replaceReg(reg,str)+'<br />');
</script>


第二个是替换object代码嵌入的flash代码替换为

Flash动画

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wfydjs.html