php正则讲解 及与 js的正则比较

  正则:用于检索字符串的规则;  js正则:  varreg=/规则/  reg是一个对象,在浏览器下;  所以研究他的属性和方法  属性:  global是修饰符,代表全局检索  g  ignorecase  忽略大小写的检索  i  multiline  代表多行匹配  m  lastindex  代表检索的起始位置  注意:这个需要结合全局匹配g  source  资源  代表正则表达式中字段的内容;  方法:  匹配的方法  test()  捕获的方法  exec()  每次捕获,就只捕获第一个,就不捕获了,这就是正则的懒惰行;  如何解决正则的懒惰性?    让其进行全局捕获;  正则的规则写法;    [abs]  代表方括号中任意一个字符;    (red|blue|green)  对一个整体分组    [^abs]  代表除了方括号中任意一个字符    [0-9]  0-9之间的任意一个数字;  元字符:    .  代表任意一个字符;    .  就是普通的.    w  单词字符    d  数字字符    s  空白字符      单词边界  量词:    n...

PHP正则表达式详解(二)

前言:在本文中讲述了正则表达式中的组与向后引用,先前向后查看,条件测试,单词边界,选择符等表达式及例子,并分析了正则引擎在执行匹配时的内部机理。本文是JanGoyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!9.单词边界元字符<<>>也是一种对位置进行匹配的“锚”。这种匹配是0长度匹配。有4种位置被认为是“单词边界”:1)在字符串的第一个字符前的位置(如果字符串的第一个字符是一个“单词字符”)2)在字符串的最后一个字符后的位置(如果字符串的最后一个字符是一个“单词字符”)3)在一个“单词字符”和“非单词字符”之间,其中“非单词字符”紧跟在“单词字符”之后4)在一个“非单词字符”和“单词字符”之间,其中“单词字符”紧跟在“非单词字符”后面“单词字符”是可以用“w”匹配的字符,“非单词字符”是可以用“W”匹配的字符。在大多数的正则表达式实现中,“单词字符”通常包括<<[a-zA-Z0-9_]>>。例如:<<4>>能够匹配单个的4而不...
代码星球 代码星球·2021-01-16

PHP正则表达式详解(一)

前言:半年前我对正则表达式产生了兴趣,在网上查找过不少资料,看过不少的教程,最后在使用一个正则表达式工具RegexBuddy时,发现他的教程写的非常好,可以说是我目前见过最好的正则表达式教程。于是一直想把他翻译过来。本文是JanGoyvaerts为RegexBuddy写的教程的译文,版权归原作者所有,欢迎转载。但是为了尊重原作者和译者的劳动,请注明出处!谢谢!1.什么是正则表达式基本说来,正则表达式是一种用来描述一定数量文本的模式。Regex代表RegularExpress。本文将用<<regex>>来表示一段具体的正则表达式。一段文本就是最基本的模式,简单的匹配相同的文本。2.不同的正则表达式引擎正则表达式引擎是一种可以处理正则表达式的软件。通常,引擎是更大的应用程序的一部分。在软件世界,不同的正则表达式并不互相兼容。本教程会集中讨论Perl5类型的引擎,因为这种引擎是应用最广泛的引擎。同时我们也会提到一些和其他引擎的区别。许多近代的引擎都很类似,但不完全一样。例如.NET正则库,JDK正则包。3.文字符号最基本的正则表达式由单个文字符号组成。如<<...
代码星球 代码星球·2021-01-16

PHP正则表达式详解(三)

1、preg_match():preg_match()函数用于进行正则表达式匹配,成功返回1,否则返回0。语法:intpreg_match(stringpattern,stringsubject[,arraymatches])参数说明pattern正则表达式subject需要匹配检索的对象matches可选,存储匹配结果的数组,$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推例子1:<?phpif(preg_match("/php/i","PHPisthewebscriptinglanguageofchoice.",$matches)){print"Amatchwasfound:".$matches[0];}else{print"Amatchwasnotfound.";}?>浏览器输出:Amatchwasfound:PHP在该例子中,由于使用了i修正符,因此会不区分大小写去文本中匹配php。提示:preg_match()第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subjec...
代码星球 代码星球·2021-01-16

PHP正则表达式模式修饰符详解

PHP模式修饰符又叫模式修正符,是在正则表达式的定界符之外使用。主要用来调整正则表达式的解释,提扩展了正则表达式在匹配、替换等操作的某些功能,增强了正则的能力。但是有很多地方的解释都是错误的,也容易误导别人,所以今天我把这个文档整理出来,供大家参考。模式修正符号功能描述i在和正则匹配是不区分大小写m将字符串视为多行。默认的正则开始“^”和结束“$”将目标字条串作为一单一的一“行”字符(甚至其中包括换行符也是如此)。如果在修饰符中加上“m”,那么开始和结束将会指点字符串的每一行的开头就是“^”结束就是“$”。s如果设定了这个修正符,那么,被匹配的字符串将视为一行来看,包括换行符,换行符将被视为普通字符串。x忽略空白,除非进行转义的不被忽略。e只用在preg_replace()函数中,在替换字符串中逆向引用做正常的替换,将其(即“替换字符串”)作为PHP代码求值,并用其结果来替换所搜索的字符串。A如果使用这个修饰符,那么表达式必须是匹配的字符串中的开头部分。比如说”/a/A”匹配”abcd”。D模式中的$字符权匹配目标字符的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配...

PHP正则表达式30分钟入门教程

正则表达式30分钟入门教程  三个常用的知识点:1、惰性匹配:正则引擎默认是贪婪的,若要最少重复的话,需要用到惰性匹配符“?”懒惰限定符代码/语法说明*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复??重复0次或1次,但尽可能少重复{n,m}?重复n到m次,但尽可能少重复{n,}?重复n次以上,但尽可能少重复 参考:http://deerchao.net/tutorials/regex/regex.htm#greedyandlazy 2、不捕获性匹配:一方面不占用反向应用组号,另一方面提高了匹配效率(?:exp)    // 匹配exp,不捕获匹配的文本,也不给此分组分配组号 参考:http://deerchao.net/tutorials/regex/regex.htm#backreference 3、PHP正则表达式模式修饰符详解模式修正符号功能描述i【忽略大小写】在和正则匹配是不区分大小写m【多行模式】说法1:启用的话,^和$将匹配行的开始于结束;不启用...

php正则表达式的匹配与替换

 只介绍两个与Perl兼容的正则表达式函数: 1.preg_match_all函数执行正则表达式匹配与搜索; 2.preg_replace函数执行正则表达式匹配与替换。 示例代码:<?php//正则表达式,匹配日期格式$pattern="/(d{2})/(d{2})/(d{4})/";$text="今年国庆节放假日期是10/01/2020到10/07/2020共7天,10/08/2020开始上班了。";/**1.正则表达式的模式匹配与替换**${1}是正则表达式$patern的第一个“()”括号;*${1}等价于\1,但最好用前一种,因为后一种不便于字符串之间分隔;*/echopreg_replace($pattern,"${3}-${1}-${2}",$text);echo"<hr><pre>";/**2.正则表达式的匹配与搜索*/if(preg_match_all($pattern,$text,$matches,PREG_SET_ORDER)){print_r($matches);}echo"</pre&g...

php正则字符串提取汉字

/*$str为输入、输出字符串变量*/preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$matches);$str=join('',$matches[0]); ...

php正则表达式简介

正则表达式RegularExpression,使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。代表性书籍《正则表达式之道》里面有详细论述,本书籍为个人查阅之用力求精简、明确、方便使用,只对必要概念做补充性说明。正则表达式本身即是一个字符串,需要一组界定符区分出哪里是正则表达式的内容。//和##和{},都是界定符,在PHP语言中用//作为正则表达式的界定符。一般不建议用{}做界定符,因为{}本身也可以是正则表达式的元字符,容易混淆。|匹配两个或者多个分支选择[]匹配方括号中任意的原子[^]匹配方括号中原子之外的任意字符,相当于[]的非.匹配除换行符之外的任意一个字符d匹配任意一个十进制的数字,即[0-9]D匹配任意一个非十进制的数字,即[^0-9]s匹配任意一个不可见原子(空白符),即[fv]S匹配任意一个非不可见原子(空白符),即[^fv]w匹配任意一个数字、字母或者下划线,即[0-9a-zA-Z_]W匹配任意一个非数字、字母、或者下划线,即[^0-9a-zA-Z_]{n}前面原子恰好重复n次{n,}前面原子重复>=n次{n,m}前面原子重复大于等于n次,小于等于m次*...
代码星球 代码星球·2021-01-09

PHP正则表达式验证是否含有中文

判断是否 有中文。if(preg_match("/[x7f-xff]/",$string)){echo"true";}else{echo"false";}判断是否全部是中文//if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str)){//只能在GB2312情况下使用if(preg_match("/^[x7f-xff]+$/",$str)){//兼容gb2312,utf-8echo"true";}else{echo"false";} 判断中文和编码有关gbk是双字节,utf8是三字节,可以根据中文的范围来判断编码范围1.GBK(GB2312/GB18030)/x00-/xffGBK双字节编码范围/x20-/x7fASCII/xa1-/xff中文/x80-/xff中文2.UTF-8(Unicode)/一-/龥(中文)/x3130-/x318F(韩文/xAC00-/xD7A3(韩文)/u0800-/一(日文)ps:韩文是大于[/龥]的字符正则例子:preg_replace(”/([/x80-/xff])/”,””,...

php正则过滤html标签、空格、换行符的代码,提取图片

$descclear = str_replace("r","",$descclear);//过滤换行$descclear =str_replace("n","",$descclear);//过滤换行$descclear =str_replace("t","",$descclear);//过滤换行$descclear = str_replace("rn","",$descclear);//过滤换行$descclear=preg_replace("/s+/", " ", $descclear);//过滤多余回车$str=preg_replace("/<[]+/si","<",$str);//过滤<__("<"号后面带空格)$str=preg_replace("/<!--.*?-->/si","",$str);//注释$str=preg_replace("/<(!.*?)>/si","",$str);//过滤DOCTYPE$str=preg_replace("/<(/?html.*?)>/si","",$str);//过滤html标...

php正则表达式 剔除字符串中的除了汉字的字符(只保留汉字)

1)utf-8的编码格式,匹配中文代码如下:<?php   $str="utf-8下匹配出中文字符串";   $preg="/[x{4e00}-x{9fa5}]+/u";   if(preg_match_all($preg,$str,$matches)){      print_r($matches);   }?>2)gb2312的编码格式,匹配中文字符串代码如下:<?php   $str="gb2312下匹配出中文字符串";   $preg="/([".chr(0xb0)."-".chr(0xf7)."][".chr(0xa1)."-".chr(0xfe)."])+/i";   if(preg_match($preg,$str,$matches)){    &n...

php正则表达式 剔除字符串中 ,除了汉字的字符(只保留汉字php 正则 只保留汉字剔除所有符号

<?php//提取字符串中的汉字其余信息剔除$str='f龙,真。,.,。?!:;·…~&@#,.?!:;、……~&@#“”‘’〝"〞'´'><﹞﹝><》《】【)(()[]«»‹〔›〕〈〉』『〗〖}{」「][}{︵︷︹︽︿﹁﹃︗︗/|\|/︘︼﹄﹂︾﹀︺︸︶__﹏﹍``¡¦^­¨ˊˇ¿ˋ︴﹊﹉﹋ ̄¯1234456789';preg_match_all('/[x{4e00}-x{9fff}]+/u',$str,$matches);//只要汉字preg_match_all('/[a-zA-Z0-9x{4e00}-x{9fff}]+/u',$str,$matches_1);//只保留汉字和数字和英文字符$str=join('',$matches[0]);$str_1=join('',$matches_1[0]);echo$str;e...

PHP正则自动验证传入数据

本文出至:新太潮流网络博客/***[is_string_regular_type正则自动验证传入数据]*@E-mialwuliqiang_aa@163.com*@TIME2017-04-07*@WEBhttp://blog.iinu.com.cn*@param[string]$keyword[传入的关键字要检索的范围]*@param[string]$string[需要用正则匹配的内容]*@returnboolean[返回数组状态]*/functionis_string_regular_type($keyword,$string){$type_array=array(//邮箱正则'email'=>['type'=>'/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/'],//用户名'username'=>['type'=>'/^w+((-w+)|(.w+))*[0-9a-zA-Z_]/','number'=>'/^w+((-w+)|(.w+))*[0-9a-zA-Z_]{6,2...

浅析PHP正则表达式的利用技巧

正则表达式(regularexpression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符")。另外正则引擎主要可以分为基本不同的两大类:一种是DFA(确定性有穷自动机),另一种是NFA(非确定性有穷自动机)。在NFA中由于表达式主导的串行匹配方式,所以用到了回溯(backtracking),这个是NFA最重要的部分,每一次某个分支的匹配失败都会导-致一次回溯。DFA没有回溯,因此看起来在某些情况下会比NFA来得更快,但是在真正使用中,DFA需要进行预编译才能获得更好效果,因为DFA的匹配方式需要更多的内存和时间,在第一次遇到正则表达式时需要比NFA详细得多的方法来分析这个表达式,不过可以预先把对不同正则表达式的分析结果建好,DFA就可以获得比NFA更优的速度。虽然NFA速度更慢,并且实现复杂,但是它又有着比DFA强大的多的功能,比如支持环视,支持反向引用(虽然这个是非正则的)等,因此大多数程序语言都使用了NF...
首页上一页12345...下一页尾页