javascript代码实例教程-javascript和php中的正则

发布时间:2019-02-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-javascript和php中的正则脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

正则:

VAR subStr=str.replace(reg/str,''); 不改变原来的字符串返回替换后的字符窜; 如果不用正则,只能替换第一个匹配到的;


var subStr=str.match(reg); 返回匹配到的字符串;如果不指定全局匹配,只match第一个出现的字符,一般和正则配合使用;


var bool=reg.test(str);===>检测str里面有没有出现符合正则的部分,

var int=str.seArch(reg/str);返回要查找的reg/str第一次出现的位置,没找到返回-1; 在大字符串中找小字符串;可以和则配合使用,但全局匹配不起作用,因为只返回第一次匹配到的字符的位置;


var subStr=str.charAt(int) 返回指定位置的一个字符;


var subStr=str.sbustring(start,[end]); 不包括end位;

var subStr=str.substr(start,length);


var arr=str.splIT('分隔符'); 默认是逗号;


兼容正则的string 函数;

****兼容正则的str函数和正则配合使用最主要的是可以用正则的模糊匹配和全局匹配,如果只是查找单个确定的字符串,就没必要用到正则;


1 str.split(PReg) ====>以正则表达式匹配的内容将str分隔成数组;注意,如果有子表达式,除了以整体正则分隔,还会以子表达式分隔,用split函数时正则最好不要带字表达式;

测试代码:


var str='aabbccddaabbccdd';

var preg=/aa/g;

var res=str.split(preg);

// alert(res.constructor); //function Array;


2str.match(preg) ==>返回一个数组;

测试代码:


var str='aabbccddaabbccdd';

var preg=/aa/g;

var a=str.match(preg);

//alert(a.constructor); //function Array;

//alert(a.length); //2;

//alert(a); //aa,aa


3 str.search


var str='aabbccddaabbccdd';

var preg=/aa/g;

var res=str.search(preg);

//alert(res.constructor); //function Number; 全局匹配不起作用;

// alert(res); //0 返回第一次匹配到的位置没找到返回-1;


4str.replace;


var str='aabbccddaabbccdd';

var preg=/aa/g;

var res=str.replace( preg,'*' );

alert(res); //*bbccdd*bbccdd;

//查找aabbcc并把其中的bb替换成*

var res1=str.replace( preg,'$1*$2' );

alert(res1); //aa*ccddaa*ccdd;


正则函数;

1 test;

var bool=preg.test(str) ;

2exec

preg.exec(str); //js最强大的正则函数;

demo:

var str='aabbccddaabbccdd';

var preg=/aa(bb)/g;

var res=preg.exec(str);

// alert(res); //aabb,aa; //返回的是一个数组,这个数组的 res[0]是正则匹配的整体,其后依次是匹配的子表达式; 当对字符串进行模糊匹配时,通过返回的结果能确定到底匹配到了什么;

//在js中一切都是对象,返回的数组包含两个属性,index和input;

// alert(res.index); //0 返回偏移量;

// alert(res.input); //aabbccddaabbccdd 返回str;

//var res=preg.exec(str);

//var res1=preg.exec(str);

//alert(res.index); //0 //这个和php里获取MySQL的函数mysql_fetch_assoc(res)类似;可以用一个while把全局匹配到的所有信息打印出来;

//alert(res1.index); //8

最后来个重口味的;把所有信息取出来;


var str='aabbccddaabbccdd';

var preg=/aa(bb)/g;


while(res=preg.exec(str)){


for(key in res){

document.write(key+'='+res[key]+'
');

}

}

0=aabb

1=bb

index=0

input=aabbccddaabbccdd

0=aabb

1=bb

index=8

input=aabbccddaabbccdd


正则区分大小写;

i 忽略大小写;

js正则对象RegExp,包含一些属性,如匹配模式i m g s等;

demo var reg=/ ^/s+|/s+$ /img; reg.source ==返回 ^/s+|/s+$

reg.global ==>返回true ==>(因为创建的reg对象指定了全局匹配)

/^/s+|/s+$/g ===>去行首和行尾的空格;

/^/s/s$/mg; ==>匹配空行;


| 或 注意 : /a|b|c/=/[abc]/;


方括号 [ ] 的第一种用法的第一种用法==>或者

第二种用法 [ a-z ] 范围 ==>代表方位内的一个;

第三种用法 ^放在方括号 [ ^ ]内表示取反;


[/u4e00-/u9fa5] ==>匹配中文;

要匹配单个中文可以查中文的unicode十六进制编码;

^行首

$行尾


/b 单词边界 字符窜首尾,或者空格,或者逗号都匹配;

/B单词的非边界

[^] 除了XXX之外;

. 代表任意字符

+代表{1,N}个和前面一样的字符

/d 数字 digital

/D [^0-9] 与/d相反

/w [0-9a-zA-Z_] word

/W [^0-9a-zA-Z_] 注意/[a-zA-Z_]/==/[a-z]/ig;

/s space

/S 除了空格外的字符;

/S 大S 匹配所有非空字符


{ n,m }

{n,}

{,m}

{n}

{1,} ==>+

{0,} ==>*

{0,1}==>出现0次或者一次


多行模式 m (把大字符串的每一行都当做一个开始和结束,如果不用多行模式,正个大字符串无论有多少行都只有一个开头和一个结尾);

题:

把每行的结尾的字符换成#;


单行模式(在Php中如果把正则匹配模式设为单行模式即s模式,那么(点).元字符就会代表任意字符,包括换行符在内;)--用途,如果要匹配的字符中间出现换行符,点元字符就不能被匹配,导致匹配不到结果.

在js中不支持单行模式可以用一对反义字符 代替单行模式;


预查(断言)==>预查字符不放入结果,


向后预查(断言)(预先判断前面的值是否为制定值)语法==>(?=xxx);

或者(预先判断前面的值是否不为制定值) 语法==> (?!xxx);



1//查找 一 ing结尾的词的词根 //b/w+?(?=ing/b)/ig; //单词本身含有ing但返回的结果是去掉了ing后的部分;

var preg=//bwin(?=xp/b)xp/b/; //要包含预差部分,还要在预查后面加上预查内容;


2//查找出以win开头且不是win95单词;

var str='winxp winstart win95 win2003';

var preg=//bwin(?!95)/w+?/b/ig;

var str1=str.match(preg);

alert(str1); //winxp winstart win2003


3//找出以un开头的词的词根:

var str='unhappy unknown happy undo';

var preg=//b(?=un)/w+?/b/gi;

var str1=str.match(preg);

alert(str1); // happy known do


向前预查(断言):(js暂时不支持) php(支持);

反向引用子表达式:

(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用;

在正则表达式内部用/1,/2/3……../n引用;

在正则表达式外部用(用正则函数和兼容正则的函数时)用$1,$2,…..$n引用;


完美版getByClass

function getByClass(oParent,classname){

var aEle=oParent.getElementsByTgeName('*');

var aResult=[];

var reg=//b+className/b+/

var i=0;

for(i; i

if( reg.test(aEle[i].className) ){

aResult.push(aEle[i]);

}

}

return aResult;

}






php中的正则; php的正则语法和js几乎一致;只是使用的正则函数不同


//php正则函数;

对数组进行正则替换;

1:array preg_grep ( string $pattern , array $input [, int $flags = 0 ] );

第三个可选参数$flag只有一个值PREG_GREP_INVERT,如果指定,则返回没有被匹配到的数组元素(即取反);


正则匹配;

2 int preg_match ( string $pattern , string $subject [, array &$matches ] )

第三个可选参数保存了匹配到的字符串(一维数组),后面两个参数最好不要用,如果用了第4个可选参数,会导致数组位数的增加;

返回值,匹配成功返回1,没匹配到返回0;


3int preg_match_all ( string $pattern , string $subject [, array &$matches ]);


参数和用法和preg_match()一样;

返回值,匹配到了返回匹配到的次数;没匹配到返回0;


4正则替换;

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 )

此函数默认(-1)是全局替换,如果不希望全部替换,第四个可选参数可以指定替换的次数;


5正则切分

array preg_split ( string $pattern , string $subject [, int $limit = -1 ]);

此函数返回一个数组,第四个可选参数指定希望返回的数组的最大的长度(通过这个参数可以对字符串进行不王全切分);


6特殊字符转义;

string preg_quote ( string $str [, string $delimiter = NULL ] );

此函数会对传入的$strcan参数里面的在真中又特殊含义的特殊字符进行加反斜杠转义,第二个可选参数可以额外指定一个被转义的任意字符; 此函数和前面几个正则函数配合使用才能发挥更大的威力;

demo1:

$keywords = '$40 for a g3/400';

$keywords = preg_quote($keywords, '/');

echo $keywords; // returns /$40 for a g3//400


demo2:

$textbody = "This book is *very* difficult to find.";

$word = "*very*";

$textbody = preg_replace ("/" . preg_quote($word) . "/",

"" . $word . "",

$textbody);


觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-javascript和php中的正则全部内容,希望文章能够帮你解决javascript代码实例教程-javascript和php中的正则所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。