正则:

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

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

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

varint=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]+'<br/>');

}

}

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<aEle.length;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) . "/",

"<i>" . $word . "</i>",

$textbody);

javascript和php中的正则的更多相关文章

  1. Javascript模板及其中的数据逻辑分离思想(MVC)

    #Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...

  2. Javascript 将一个句子中的单词首字母转成大写

    Javascript 将一个句子中的单词首字母转成大写 先上代码 function titleCase(str) { str = str.toLowerCase().split(" &quo ...

  3. js进阶js中支持正则的四个常用字符串函数(search march replace split)

    js进阶js中支持正则的四个常用字符串函数(search march replace split) 一.总结 代码中详细四个函数的用法 search march replace split 二.js进 ...

  4. JavaScript从数组中删除指定值元素的方法

    本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...

  5. java中关于正则一些基础使用

    希望能帮到有需要的朋友.-----转载请注明出处. 对于正则处理相关的知识,我一开始是从网上找资料配合使用Java API1.6的一个中文版进行学习,很感谢翻译这个版本的团队(机构)或者个人,很感谢那 ...

  6. 大型 JavaScript 应用架构中的模式

    原文:Patterns For Large-Scale JavaScript Application Architecture by @Addy Osmani 今天我们要讨论大型 JavaScript ...

  7. 细数Javascript技术栈中的四种依赖注入

    作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道 ...

  8. [转]大型 JavaScript 应用架构中的模式

    目录 1.我是谁,以及我为什么写这个主题 2.可以用140个字概述这篇文章吗? 3.究竟什么是“大型”JavaScript应用程序? 4.让我们回顾一下当前的架构 5.想得长远一些 6.头脑风暴 7. ...

  9. JavaScript 在函数中使用Ajax获取的值作为函数的返回值

    解决:JavaScript 在函数中使用Ajax获取的值作为函数的返回值,结果无法获取到返回值 原因:ajax默认使用异步方式,要将异步改为同步方式 案例:通过区域ID,获取该区域下所有的学校 var ...

随机推荐

  1. Python的面向对象2

    我们接着讲解Python的面向对象 1.初始化实例属性 在现实生活中,一种类型的实例会具有相同的某些属性,把这些实例划分为一个类型,则这些实例必然有相似的部分.但是,在创建实例之后,我们一个一个的为实 ...

  2. NotePad++更改背景颜色

    白色的编辑框看得眼睛不舒服,怎么样更改NotePad++的背景颜色使眼睛更舒服些? 1.设置--语言格式设置 2.设置背景色 “背景色”一栏,选择背景色颜色   “使用全局背景色”一栏要打上√,否则无 ...

  3. 结缘PDO

    起因 一直没有注意看数据库相关知识 几个月之前,无意打开如下一段代码: 被人吐槽是N年前的写法.后来也是学习需要,单一mysql已经不合适了.于是上网搜了一下好方法,PDO迎面而来. 诱惑 上网浏览时 ...

  4. phpstorm 强大的活动模板 可以自定义注释,代码段,根据cms订制自动提示

    http://jingyan.baidu.com/article/8275fc86badd6346a03cf6aa.html [PHP] phpstorm的使用(1) http://v.youku.c ...

  5. 关于多域名EXCHANGE如何设置PTR的问题

    找了很多网页, 有效的是MX可以设置不同的域名,但PTR只设置一个即可... 如果设置为一个IP为两个PTR,则在进行测试时,会发生DNS ROBBINS,即一次找这个,一次找那个. 切记. .... ...

  6. 关于后缀数组的倍增算法和height数组

    自己看着大牛的论文学了一下后缀数组,看了好久好久,想了好久好久才懂了一点点皮毛TAT 然后就去刷传说中的后缀数组神题,poj3693是进化版的,需要那个相同情况下字典序最小,搞这个搞了超久的说. 先简 ...

  7. 码云分布式之 Brzo 服务器

    摘要: 码云是国内最大的代码托管平台,为了支持更大的用户规模,开发团队也在对一些组件进行大规模的重构. 前言 码云是国内最大的代码托管平台.码云基于 Gitlab 5.5 开发,经过几年的开发已经和官 ...

  8. 【CF】259 Div.1 B Little Pony and Harmony Chest

    还蛮有趣的一道状态DP的题目. /* 435B */ #include <iostream> #include <string> #include <map> #i ...

  9. 集合ArrayList双色球练一练(自己的方法,太麻烦)

    namespace 集合__双色球练一练{    class Program    {        static void Main(string[] args)        {        / ...

  10. Asp.net--Ajax前后台数据交互

    转自:http://www.cnblogs.com/guolebin7/archive/2011/02/22/1961737.html 代码由前后台两部分组成: 前台:(新建一个Default.asp ...