加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

JavaScript中常用的正则表达式日常整理(全)

发布时间:2016-11-28 01:36:57 所属栏目:大数据 来源:网络整理
导读://校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false return true } 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉

IamUE给出了代码:

lt;script type="text/javascript"gt; 
var _A = ['A','B','C','D']; 
var _B = 'lt;ulgt;lt;ligt;$0$lt;/ligt;lt;ligt;$1$lt;/ligt;lt;ligt;$2$lt;/ligt;lt;ligt;$3$lt;/ligt;lt;/ulgt;'; 
var reg=/$d+$/ig; 
C=_B.replace(reg,function($1){ 
var indexnum=$1.replace(/$/ig,""); 
if (indexnumlt;_A.length) 
{return _A[indexnum];} 
else{return ""} 
}); 
alert(C); 
lt;/scriptgt;

代码分析:看到代码之后感觉有点晕,首先,正则reg中没有任何的括号,应该是没有捕获内容的,那么后面怎么又使用$1了引用了呢?通过alert测试,发现它是整个正则匹配的内容,而且不一定要写作$1,可以写为$0,甚至是写为x都没关系,它总是整个匹配。

第一次,$1匹配到_B中的“$0$”,匿名函数中将它的$去掉,变成了0,检查是否越界之后,用这个0作为下标去访问数组_A。

由于正则reg定义了g属性,所以会继续替换$1$、$2$等等。步骤都和上面一样。

正则替换指定属性中的文本

来源:怎样用正则来查找替换?

有如下代码:

lt;td align="center"gt;lt;img src="../photo/ccg/thumbnails/O'Malley's West_jpg.gif" border="0" onClick="MM_openBrWindow('../photo/ccg/pages/O'Malley's West_jpg.htm','BE','width=386,height=306')"gt;lt;brgt;
O'Malley's Westlt;/tdgt; 

要求将所有onclick属性中的'替换成',也就是将单引号转义。

首先,需要匹配onclick属性:

/onclicks*=s*".+#63;"/ig 然后再将所有的'都替换成'就可以了。

将阿拉伯数字替换为中文大写形式

来源:正则问题

将123替换成壹贰叁。

只要匹配一个数字就可以了,测试代码如下(如果显示为乱码就调整一下浏览器的字符编码):

function replaceReg(reg,str){ 
return str.replace(reg,function(m){return arr[m];}) 
} 
arr=new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖"); 
var reg = /d/g; 
var str = '13889294444'; 
var str2 = '12889293333'; 
var str3 = '23445567'; 
document.write(replaceReg(reg,str)+'lt;br /gt;'); 
document.write(replaceReg(reg,str2)+'lt;br /gt;'); 
document.write(replaceReg(reg,str3)+'lt;br /gt;'); 

替换文本中的URL为链接

来源:求一链接替换正则

将一个用户输入的一段文字中的url替换成可以点击的link地址。例如:http://www.blueidea.com可以替换成 [url]http://www.cctv.com[/url]

或lt;a href="http://www.cctv.com"gt;http://www. blueidea.comlt;/agt;.

这个正则的关键就在于匹配链接,匹配之后,在两边加上a标签和属性不是问题。

/http://[w-]*(.[w-]*)+/ig 首先匹配http://。

[w-]*是可能的www和bbs等。

.[w-]*匹配.xxx形式,至少有一个。

测试代码如下:

lt;script type="text/javascript"gt; 
function replaceReg(reg,str){ 
return str.replace(reg,function(m){return 'lt;a href="'+m+'"gt;'+m+'lt;/agt;';}) 
} 
var reg = /http://[w-]*(.[w-]*)+/ig; 
var str = '将一个用户输入的一段文字中的url替换成可以点击的link地址。


测试一下:http://www.blueidea.com紧接着中文,还有http://bbs.blueidea.com

is very good!http://blueidea.com!最后在看看带.cn的:http://www.sina.com.cn呵呵。';

document.write(replaceReg(reg,str)+'lt;br /gt;');
lt;/scriptgt;

从HTML代码段删除指定标签极其内容

来源:关于正则的问题

在一段代码中去除lt;script ...... /scriptgt;, lt;headgt;...lt;/headgt;,lt;%.....%gt;等代码块

隆的正则:

/lt;(script|meta|%)[sS]*#63;/(script|meta|%)gt;/ 试了一下,匹配如下文本正常:

lt;script type="text/javascript"gt;
我是要被删除的脚本
lt;/scriptgt;
哎。就剩下我了。 但是,如果使用类似的正则:

/lt;(script|head|%)[sS]*#63;/(script|head|%)gt;/ig 匹配有嵌套的标签:

lt;headgt;
lt;script type="text/javascript"gt;

我是要被删除的脚本
lt;/scriptgt;
lt;/headgt;

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

lt;headgt;
lt;script type="text/javascript"gt;

我是要被删除的脚本
lt;/scriptgt;

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

最后的正则如下:

/lt;(script|head|%)[sS]*#63;/1gt;/ig 用正则给文本分段

来源:怎样用正则分段落

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

要把文本分段成如下格式:

一、[title]标题一[/title]内容一232323sdfga

二、[title]标题二[/title]内容二2232323

三、[title]标题三[/title]内容三2232323

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

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

lt;script type="text/javascript"gt; 
function replaceReg(reg,str){ 
var mark =0; 
return str.replace(reg,function(m){mark++;return 'lt;br /gt;'+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)+'lt;br /gt;'); 
lt;/scriptgt; 

转换源代码中的标签

来源:一个正则上的问题

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

/lt;img(#63;:s*w*#63;s*=s*".+#63;")*#63;s*srcs*=s*"(.+#63;)"(#63;:s*w*#63;s*=s*".+#63;")*s*gt;/ig

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

测试代码如下:

lt;script type="text/javascript"gt; 
function replaceReg(reg,str){ 
return str.replace(reg,'[img]$1[/img]') 
} 
var reg = 
/lt;img(#63;:s*w*#63;s*=s*".+#63;")*#63;s*srcs*=s*"(.+#63;)"(#63;:s*w*#63;s*=s*".+#63;")*s*gt;/ig; 
var str = '我就是传说中的图片了lt;img src="URL"gt;哎。'; 
document.write(replaceReg(reg,str)+'lt;br /gt;'); 
lt;/scriptgt; 

第二个是替换object代码嵌入的flash代码替换为JavaScript中常用的正则表达式日常整理(全)Flash动画JavaScript中常用的正则表达式日常整理(全)在线播放。

针对原文的正则如下:

/lt;object[sS]*#63;src=([sS]+#63;)(#63;=s)[sS]*lt;/objectgt;/i 如果是所有的属性都有双引号的话正则也需要修改。

测试如下:

lt;script type="text/javascript"gt; 
function replaceReg(reg,str){ 
return str.replace(reg,'JavaScript中常用的正则表达式日常整理(全)Flash动画JavaScript中常用的正则表达式日常整理(全)在线播放') 
} 
var reg = /lt;object[sS]*#63;src=([sS]+#63;)(#63;=s)[sS]*lt;/objectgt;/i; 
var str = 'lt;object classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 
codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/
swflash.cab#version=5,0,0,0 width=255 height=250gt;lt;param name=movie 
value=urlgt;lt;param name=quality value=highgt;lt;embed src=url quality=high 
pluginspage=http://www.macromedia.com/shockwave/download/index.cgi#63;
P1_Prod_Version=ShockwaveFlash type=application/x-shockwave-flash 
width=255 height=250gt;lt;/embedgt;lt;/objectgt;'; 
document.write(replaceReg(reg,str)+'lt;br /gt;'); 
lt;/scriptgt; 

给属性添加双引号

来源:请教正则表达式高手

给HTML标签中的属性添加双引号。

lt;a href=xxxgt;改为:lt;a href="xxx"gt;

LeXRus的第一个正则如下:

/(#63;!lt;w+)(s+w+)=([^gt;"s]+)/ig 第一个括号没看明白,JS应该是不支持。所以我擅自给删掉了,剩下的正则如下:

/(s+w+)=([^gt;"s]+)/ig 第一个括号里的s+w+匹配的是属性名。

然后是=,不用转义。

第二个括号里的[^gt;"s]+匹配属性值。不匹配gt;”和空格。这里的引号不用转义。在意思不改变的情况下,稍微改了改,正则如下:

/(s+w+)=([^gt;"s]+)/ig 需要注意的是这个正则不匹配=两边有空格的属性,例如href = xxx。相匹配的话就改成:

/(s+w+)s*=s*([^gt;"s]+)/ig 代码:

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!