加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 大数据 > 正文

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

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

/^(([a-z]+s+)|(s+[a-z]+))[a-zs]*$/i 英文开头加空格,或者是空格开头加英文,后面可以是英文或者空格。测试代码如下:

lt;script type="text/javascript"gt; 
function istrue(str){ 
var reg=/^(([a-z]+s+)|(s+[a-z]+))[a-zs]*$/i; 
return reg.test(str); 
} 
var str#63; = 'asdf'; 
var str2 = 'sadf sdf'; 
var str3 = 'asdf '; 
document.write(istrue(str)+'lt;br /gt;'); 
document.write(istrue(str2)+'lt;br /gt;'); 
document.write(istrue(str3)+'lt;br /gt;'); 
lt;/scriptgt; 

利用这个思路也可以实现英文空格英文,英文单词多于两个的匹配。同样,也可以把英文字母换成单词字符w。

显示或者保存正则表达式匹配的部分内容
有如下电话号码:

13588888333
13658447322
13558885354
13587774654
13854554786

要求,要求只匹配135开头的电话,但是匹配结果只保留135后面的数字。

由于JavaScript里的正则不支持(#63;=xx)xxx的模式,只支持xxx(#63;=xx)的模式。所以只能将135后面的内容作为一个子正则表达式匹配的内容,然后再在后面引用。

Carl给出的函数如下:

function f(phoneNumber) { 
var pattern = /^(135)(d{8})$/; 
if(pattern.test(phoneNumber)) 
return phoneNumber.replace(pattern,"$2"); 
else 
return "不是135打头的手机号码!"; 
} 

/^(135)(d{8})$/ 正则中,135作为开头表示第一个子正则表达式,第二个括号内的子正则表达式则匹配后面的8个数字,然后在replace中使用$2就可以引用这个子正则表达式匹配的内容了。测试代码如下:

lt;script type="text/javascript"gt; 
function f(phoneNumber) { 
var pattern = /^(135)(d{8})$/; 
if(pattern.test(phoneNumber)) 
return phoneNumber.replace(pattern,"$2"); 
else 
return "不是135打头的手机号码!"; 
} 
var arr = new Array( 
"13588888333", 
"13658447322", 
"13558885354", 
"13587774654", 
"13854554786" 
); 
for(var i = 0; i lt; arr.length; i++) 
document.write(f(arr[i])+'lt;br /gt;'); 
lt;/scriptgt;

正则表达式替换变量

来源:求教正则

有一个数组:

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;';

说是变量,其实只是字符串中的特殊字符,例如$0$,就称这个为伪变量吧。

最后的要求就是使用正则获得下面这样一个字符串:

_C = 'lt;ulgt;lt;ligt;Alt;/ligt;lt;ligt;Blt;/ligt;lt;ligt;Clt;/ligt;lt;ligt;Dlt;/ligt;lt;/ulgt;';

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形式,至少有一个。

(编辑:PHP编程网 - 黄冈站长网)

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

热点阅读