javascript和php中的正则
正则:
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中的正则的更多相关文章
- Javascript模板及其中的数据逻辑分离思想(MVC)
#Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...
- Javascript 将一个句子中的单词首字母转成大写
Javascript 将一个句子中的单词首字母转成大写 先上代码 function titleCase(str) { str = str.toLowerCase().split(" &quo ...
- js进阶js中支持正则的四个常用字符串函数(search march replace split)
js进阶js中支持正则的四个常用字符串函数(search march replace split) 一.总结 代码中详细四个函数的用法 search march replace split 二.js进 ...
- JavaScript从数组中删除指定值元素的方法
本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个 ...
- java中关于正则一些基础使用
希望能帮到有需要的朋友.-----转载请注明出处. 对于正则处理相关的知识,我一开始是从网上找资料配合使用Java API1.6的一个中文版进行学习,很感谢翻译这个版本的团队(机构)或者个人,很感谢那 ...
- 大型 JavaScript 应用架构中的模式
原文:Patterns For Large-Scale JavaScript Application Architecture by @Addy Osmani 今天我们要讨论大型 JavaScript ...
- 细数Javascript技术栈中的四种依赖注入
作为面向对象编程中实现控制反转(Inversion of Control,下文称IoC)最常见的技术手段之一,依赖注入(Dependency Injection,下文称DI)可谓在OOP编程中大行其道 ...
- [转]大型 JavaScript 应用架构中的模式
目录 1.我是谁,以及我为什么写这个主题 2.可以用140个字概述这篇文章吗? 3.究竟什么是“大型”JavaScript应用程序? 4.让我们回顾一下当前的架构 5.想得长远一些 6.头脑风暴 7. ...
- JavaScript 在函数中使用Ajax获取的值作为函数的返回值
解决:JavaScript 在函数中使用Ajax获取的值作为函数的返回值,结果无法获取到返回值 原因:ajax默认使用异步方式,要将异步改为同步方式 案例:通过区域ID,获取该区域下所有的学校 var ...
随机推荐
- 在 IIS MIME 类型中添加 md 扩展名
最近在了解 Knowledge Base (知识库)的内容,对两个平台比较感兴趣,一个是 Raneto,一个是 MDwiki,两者都是使用md文件作为内容存储. 需要注意的是,使用IIS部署网站后,需 ...
- Google java编程技术规范
不遵循规范的程序猿,不是好的coder. 学习java有一段时间了,一直想找java编程技术规范来学习一下,幸而网络资源丰富,各路玩家乐于分享,省去了好多麻烦,姑且算站在网友的肩上,砥砺前行. /** ...
- MIME
http://www1.huachu.com.cn/read/readbookinfo.asp?sectionid=1000000558 http://www.jb51.net/hack/10623. ...
- WINDOWS下,中文JSON格式读取报错处理:ValueError: No JSON object could be decoded
File "C:\Python27\lib\json\__init__.py", line 290, in load **kw) File "C:\Python27\li ...
- 深入了解View实现原理以及自定义View详解
下面几篇文章对View的原理讲的非常详细. Android LayoutInflater原理分析,带你一步步深入了解View(一) Android视图绘制流程完全解析,带你一步步深入了解View(二) ...
- Linux搭建SVN 服务器
Linux搭建SVN 服务器 1 安装SVN 2 使用客户端连接 2.1 使用windows的客户端 2.2 使用Linux下的命令行 3 ...
- redhat下升级gcc编译器
在有网络的环境下,采用下载gcc源码进行编译的方式升级gcc版本,所以需要本身已有gcc编译器. 获取 gcc-4.9.2的包: wget http://gcc.skazkaforyou.com/re ...
- POJ_3045_Cow_Acrobats_(贪心)
描述 http://poj.org/problem?id=3045 n头牛,每头牛都有重量w[i]和力量s[i].把这n头牛落起来,每头牛会有一个危险值,危险值是它上面所有牛的重量和减去它的力量.求危 ...
- java基于xml配置的通用excel单表数据导入组件(四、DAO主处理类)
package XXXXX.manage.importexcel; import java.beans.IntrospectionException; import java.io.BufferedR ...
- 【转】调整mac电脑鼠标移动速度
原文网址:https://www.zhihu.com/question/19579075 作者:陆猛链接:https://www.zhihu.com/question/19579075/answer/ ...