PHP 常用正则表达式 正则
Python|文本处理:用正则表达式替换掉汉字(非英文)中间的空格
Python|文本处理:用正则表达式替换掉汉字(非英文)中间的空格网络上的一些文本,部分会有一些不必要的空格,如果想把空格全部替换掉,使用字符串string类的replace()方法即可,如:str = str.replace(' ','')但如果是中英文混排的文本,如果想替换掉汉字中间的空格,而保留英文单词之间的空格,则问题的解决要复杂一些。
需要用到正则表达式。
如有以下文档:行(或段)的首尾、一些汉字之间有不必要的空格,需要替换掉。
用以下Python代码即可:处理后的文本保存到了new.txt文档:当然,一些有规律的乱码也可以处理。
上面有提到全部是中文的简单处理方法,也可以用一个简单的正则表达式判断文档或字符串内容是否包含“英文+空格+英文”的形式,然后用一个条件判断分别处理:下面需要重点剖析一下上面关于正则表达式的概念及相关的一些内容:正则表达式是一种用来匹配字符串的强有力的武器。
它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
1 compile()方法向pile()传入一个字符串值,表示编译一个正则表达式,它将返回一个Regex 模式对象(或者就简称为Regex 对象)。
我们在Python中使用正则表达式时,re模块内部会做两件事情:I 编译正则表达式,如果正则表达式的字符串本身不合法,会报错;II 用编译后的正则表达式去匹配字符串;如果一个正则表达式要重复使用多次或一些较复杂的正则表达式,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配。
编译后生成Regular Expression对象。
可以向pile()传入re.IGNORECASE 或re.I,作为第二个参数,让正则表达式不区分大小写:>>> robocop = pile(r'robocop',re.I)>>> robocop.search('RoboCop is partman, part machine, all cop.').group()'RoboCop'2 r'……'的写法r'……'表示忽略……可中可能存在的转义字符,当做普通字符看待;3 中括号[]有时候你想匹配一组字符,但缩写的字符分类(\d、\w、\s 等)太宽泛。
thinkphp validate正则
thinkphp validate正则ThinkPHP 中的验证规则是在验证器(Validator)中定义的,这些规则用于验证用户提交的数据。
在 ThinkPHP 中,可以使用 regex 验证规则来指定一个字段必须匹配指定的正则表达式。
以下是一个简单的例子,演示了如何在 ThinkPHP 验证器中使用regex 规则:<?phpnamespace app\index\validate;use think\Validate;class User extends Validate{protected $rule = ['username' => 'require|regex:/^[a-zA-Z0-9_]{4,16}$/','password' => 'require|regex:/^[a-zA-Z0-9_]{6,12}$/','email' => 'email',];protected $message = ['username.require' => '用户名不能为空','username.regex' => '用户名必须为字母、数字或下划线,长度在4-16之间','password.require' => '密码不能为空','password.regex' => '密码必须为字母、数字或下划线,长度在6-12之间','email.email' => '邮箱格式不正确',];}在上述示例中,regex:/^[a-zA-Z0-9_]{4,16}$/ 表达式指定了username 字段必须是包含字母、数字或下划线的字符串,且长度在4 到 16 之间。
PHPpreg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
PHPpreg_match实现正则表达式匹配功能【输出是否匹配及匹配值】本⽂实例讲述了PHP preg_match实现正则表达式匹配功能。
分享给⼤家供⼤家参考,具体如下:preg_match — 执⾏⼀个正则表达式匹配preg_match ( $pattern , $subject , $matches )搜索subject与pattern给定的正则表达式的⼀个匹配.参数:pattern : 要搜索的模式,字符串类型(正则表达式)。
subject : 输⼊的字符串。
matches :(可有可⽆)如果提供了参数matches,它将被填充为搜索结果。
$matches[0]将包含完整模式匹配到的⽂本,$matches[1] 将包含第⼀个捕获⼦组匹配到的⽂本,以此类推。
返回值:preg_match()返回 pattern 的匹配次数。
它的值将是0次(不匹配)或1次,因为preg_match()在第⼀次匹配后将会停⽌搜索。
preg_match_all()不同于此,它会⼀直搜索subject 直到到达结尾。
如果发⽣错误preg_match()返回 FALSE。
实例1:$label = 'content/112';$a = preg_match('#content/(\d+)#i', $label, $mc);var_dump($a);var_dump($mc);输出:int(1)array(2) {[0]=>string(11) "content/112"[1]=>string(3) "112"}实例2:$label = 'content/112';$a = preg_match('#(\w+)/(\d+)#i', $label, $mc);var_dump($a);var_dump($mc);输出:int(1)array(3) {[0]=>string(11) "content/112"[1]=>string(7) "content"[2]=>string(3) "112"}实例3:$label = 'content/112';$a = preg_match('#content1111111/(\d+)#i', $label, $mc);var_dump($a);var_dump($mc);输出:int(0)array(0) {}PS:这⾥再为⼤家提供2款⾮常⽅便的正则表达式⼯具供⼤家参考使⽤:更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家PHP程序设计有所帮助。
PHP常用正则表达式
PHP常⽤正则表达式PHP代码$str = preg_replace("/(<a.*?>)(.*?)(<\/a>)/", '\1<span class="link">\2</span>\3', $str);其中⽤了三个⼦模式(每个圆括号中内容为⼀个⼦模式),第⼀个是链接开始标签,第⼆个是链接⽂本,第三个是</a>然后第⼆个参数中\1、\2、\3就表⽰这三个部分,要替换成什么样⼦还不简单?获取页⾯中的所有链接地址的PHP函数下⾯这个⽤PHP写的函数,可以获取任意的字符串$string中的所有链接地址($string可以是从⼀个HTML页⾯⽂件直接读取出来的字符串),结果保存在⼀个数组中返回.该函数⾃动把电⼦邮件地址排除在外,⽽且返回的数组中不会有重复元素.function GetAllLink($string){$string = str_replace("\r","",$string);$string = str_replace("\n","",$string);$regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)";$regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)";//去掉标签之间的⽂字$string = eregi_replace(">[^<>]+<","><", $string);//去掉JAVASCRIPT代码$string = eregi_replace("<!--.*//-->","", $string);//去掉⾮<a>的HTML标签$string = eregi_replace("<[^a][^<>]*>","", $string);//去掉EMAIL链接$string = eregi_replace("<a([ ]+)href=([\"']*)mailto:($regex[email])([\"']*)[^>]*>","", $string);//替换需要的⽹页链接$string = eregi_replace("<a([ ]+)href=([\"']*)($regex[url])([\"']*)[^>]*>","\\3\t", $string);$output[0] = strtok($string, "\t");while(($temp = strtok("\t"))){if($temp && !in_array($temp, $output))$output[++$i] = $temp;}return $output;}以下是以PHP的语法所写的⽰例验证字符串是否只含数字与英⽂,字符串长度并在4~16个字符之间<?php$str = 'a1234';if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {echo "验证成功";} else {echo "验证失敗";}?>简易的台湾⾝分证字号验证<?php$str = 'a1234';if (preg_match("^(?:\d{15}|\d{18})$", $str)) {echo "验证成功";} else {echo "验证失敗";}>匹配中⽂字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中⽂还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\xff]评注:可以⽤来计算字符串的长度(⼀个双字节字符长度计2,ASCII字符计1)匹配空⽩⾏的正则表达式:\n\s*\r评注:可以⽤来删除空⽩⾏匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />评注:⽹上流传的版本太糟糕,上⾯这个也仅仅能匹配部分,对于复杂的嵌套标记依旧⽆能为⼒匹配⾸尾空⽩字符的正则表达式:^\s*|\s*$评注:可以⽤来删除⾏⾸⾏尾的空⽩字符(包括空格、制表符、换页符等等),⾮常有⽤的表达式匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*评注:表单验证时很实⽤匹配⽹址URL的正则表达式:[a-zA-z]+://[^\s]*评注:⽹上流传的版本功能很有限,上⾯这个基本可以满⾜需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实⽤匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}评注:匹配形式如 0511-******* 或 021-********匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中国邮政编码:[1-9]\d{5}(?!\d)评注:中国邮政编码为6位数字匹配⾝份证:\d{15}|\d{18}评注:中国的⾝份证为15位或18位匹配ip地址:\d+\.\d+\.\d+\.\d+评注:提取ip地址时有⽤匹配特定数字:^[1-9]\d*$ //匹配正整数^-[1-9]\d*$ //匹配负整数^-?[1-9]\d*$ //匹配整数^[1-9]\d*|0$ //匹配⾮负整数(正整数 + 0)^-[1-9]\d*|0$ //匹配⾮正整数(负整数 + 0)^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配⾮负浮点数(正浮点数 + 0)^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配⾮正浮点数(负浮点数 + 0)评注:处理⼤量数据时有⽤,具体应⽤时注意修正匹配特定字符串:^[A-Za-z]+$ //匹配由26个英⽂字母组成的字符串^[A-Z]+$ //匹配由26个英⽂字母的⼤写组成的字符串^[a-z]+$ //匹配由26个英⽂字母的⼩写组成的字符串^[A-Za-z0-9]+$ //匹配由数字和26个英⽂字母组成的字符串^\w+$ //匹配由数字、26个英⽂字母或者下划线组成的字符串下⾯是⼀些特殊字符:正则表达式中的特殊字符:(学习参考书-<<精通正则表达式>>)字符意义:对于字符,通常表⽰按字⾯意义,指出接着的字符为特殊字符,不作解释。
匹配指定字符串的正则表达式
匹配指定字符串的正则表达式正则表达式是一种强大的文本处理工具,它可以用来匹配指定的字符串。
在实际开发中,我们经常需要使用正则表达式来处理字符串,比如验证邮箱、手机号码等。
本文将介绍如何使用正则表达式来匹配指定的字符串。
一、基本语法正则表达式是由一些特殊字符和普通字符组成的字符串,它可以用来匹配文本中的某些模式。
在正则表达式中,有一些特殊字符具有特殊的含义,比如:1. ^:匹配字符串的开头。
2. $:匹配字符串的结尾。
3. .:匹配任意字符。
4. *:匹配前面的字符零次或多次。
5. +:匹配前面的字符一次或多次。
6. ?:匹配前面的字符零次或一次。
7. []:匹配方括号中的任意一个字符。
8. ():将括号中的内容作为一个整体进行匹配。
例如,正则表达式 ^hello$ 可以匹配字符串 "hello",但不能匹配 "hello world"。
正则表达式 .+ 可以匹配任意长度的字符串,而正则表达式[abc] 可以匹配字符 a、b 或 c。
二、常用正则表达式1. 匹配数字:^\d+$这个正则表达式可以匹配一个或多个数字,其中^ 表示字符串的开头,\d 表示数字,+ 表示匹配前面的字符一次或多次,$ 表示字符串的结尾。
例如,正则表达式^\d+$ 可以匹配字符串"123",但不能匹配"1a2b3c"。
2. 匹配邮箱:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$这个正则表达式可以匹配合法的邮箱地址,其中 \w 表示字母、数字或下划线,+ 表示匹配前面的字符一次或多次,* 表示匹配前面的字符零次或多次,() 表示将括号中的内容作为一个整体进行匹配,[] 表示匹配方括号中的任意一个字符,- 表示匹配一个范围内的字符,. 表示匹配任意字符。
例如,正则表达式 ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 可以匹配邮箱地址"***********"。
php正则表达式函数使用2
PREG_SPLIT_DELIM_CAPTURE 定界符模式中得括号表达式也会被捕捉返回。
PREG_SPLIT_OFFSET_CAPTURE对每个出现的匹配结果也同时返回其附属的字符串偏移量。
字符串处理函数
preg_replace_callback()
preg_prelace(模式,字符串,替换字符串,可选参数替换次数)字符串查找替换,此函数有一个专门为他提供的修正模式“e”,也只有preg_replace()函数使用此修正符,如果设置此修正符,函数在替换字符串的时间将对字符串中逆向引用做正常的替换,将其作为php代码求值。并用做其结果来替换所搜索的字符串。要确保第二个参数构成一个合法的php代码字符串,否则报告中包含preg_replace()的行中出现的语法解析错误。
preg_split()字符串分割,本函数返回第一个字符串数组,数组元素包含通过第二个参数subject中得字符串,井底个参数的正则表达式pattern,作为匹配费边界分隔的字符串,如果第三个参数limit,则最多返回limit个字符串。而其最后一个元素包含了subject中剩余的所有部分。乳沟limit为-1,则意味着没有限制。还可以用来继续只等第四个可选参数flags,其中flags可以是下了标记的任意组合。
preg_match_all()
此函数与perg_match函数相似不同的是perg_match函数在第一次匹配之后就会停止搜索,而parg_match_all则不会,他会一直匹配到字符串的结尾才结束搜索。
preg_quote()
$str="ab+cd=ef{g";
php正则验证中文
一、利用正则表达式验证中文注意UTF8编码和GB2312有所不同。
1.UTF8下的中文验证$str1 = "编程";$str = "php编程";if (preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$str)) {print("该字符串全部是中文");} else {print("该字符串不全部是中文");}2.GB2312下中文的验证if (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $st_name){print("该字符串全部是中文");} else {print("该字符串不全部是中文");}PHP中用正则表达式验证中文的有以下问题需注意例如:str = '中华人民共和国123456789abcdefg';echo preg_match("/^[\u4e00-\u9fa5_a-zA-Z0-9]{3,15}",strName);运行一下上面这段代码,看会有什么提示信息?Warning: preg_match(): Compilation failed: PCRE does not support \L, \l, \N, \P, \p, \U, \u, or \X at offset 3 in F:\wwwroot\php\test.php on line 2原来,PHP正则表达式中不支持下列 Perl 转义序列:\L, \l, \N, \P, \p, \U, \u, or \X在 UTF-8 模式下,允许用“\x{...}”,花括号中的内容是表示十六进制数字的字符串。
原来的十六进制转义序列 \xhh 如果其值大于 127 的话则匹配了一个双字节 UTF-8 字符。
PHP中的正则表过式
正则表达式整理邹义良邮箱:it9981@微博:/it266论坛:定义:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
使用原则:可以使用字符串函数完成的功能,优先选择函数,复杂的操作,才选用正则表过式。
需要和函数一起使用,才能发挥出正则表达式的作用。
(分割、匹配、查找、替换…)php中提供两套正则表达式函数库:1.POSIX扩展正则表达式函数(ereg_开头)2.Perl兼容正则表达式函数(preg_开头) 推荐学习和使用正则表达式模式如何编写语法:1.定界符号2.原子3.元字符4.模式修正符号测试代码<?php$regex='/[^0-9a-zA-Z]/';$str='1aA#';echo '表达式:<b>'.$regex.'</b> ';echo '字符串:<b>'.$str.'</b> ';if(preg_match($regex,$str)){echo '<font color="green">匹配成功</font>';}else{echo '<font color="red">匹配失败</font>';}?>定界符:起始和结束的符号。
除了字母、数字和反斜线(\)以外的任何字符,都可以为定界符。
// || {} !! ……没有特殊需要,都使用//作为定界符定界符之间,是原子、元字符,字界符外边,是模式修正符。
有的语言中,可以没有定界符原子:是正则表达式的最基本组成单位,必须至少包含一个原子。
只要在正则表达式中,可以单独使用的字符,都是原子。
php 正则匹配写法
php 正则匹配写法在 PHP 中,你可以使用正则表达式进行模式匹配。
下面是一些常见的正则表达式匹配的写法示例:1. 匹配文本中的数字:```php$pattern = "/\d+/";if (preg_match($pattern, $text, $matches)) {echo "匹配到的数字是: " . $matches[0];} else {echo "未找到匹配的数字";}```2. 匹配电子邮件地址:```php$pattern = "/^\w+([-+.]\w+)\w+([-.]\w+)\.\w+([-.]\w+)$/";if (preg_match($pattern, $email, $matches)) {echo "匹配到的电子邮件地址是: " . $matches[0];} else {echo "未找到匹配的电子邮件地址";}```3. 匹配 URL:```php$pattern = "/^(httphttps):\/\/[^\s]+$/";if (preg_match($pattern, $url, $matches)) {echo "匹配到的 URL 是: " . $matches[0];} else {echo "未找到匹配的 URL";}```这些示例中的正则表达式只是简单的示例,你可以根据自己的需求进行修改和扩展。
在编写正则表达式时,可以使用各种特殊字符和元字符来定义模式。
你可以参考 PHP 官方文档中关于正则表达式的部分,以获取更多详细信息和示例。
phpstorm 正则替换 运算
phpstorm 正则替换运算如何在PhpStorm中进行正则替换操作。
在PhpStorm中,使用正则表达式进行替换操作可以让我们更加高效地完成代码的处理和修正。
而在该过程中,常常涉及到以中括号为主题的操作,因此,下面将详细阐述在PhpStorm中如何使用正则替换进行相关的运算。
一、基本的正则替换在PhpStorm中,进行正则替换的方式非常简单。
只需要进入需要操作的文件,然后使用快捷键“Ctrl+Shift+R”即可进入“Replace”窗口。
在该窗口中,我们需要选中正则表达式选项,以启用正则替换功能。
接下来,我们就可以通过在搜索框中输入需要进行替换的正则表达式,再在替换框中输入需要替换为的字符串来完成相关的替换操作了。
比如,下面的正则表达式会将所有以“at”的单词替换成“cat”:搜索框中的正则表达式:"at\b"替换框中的字符串:"cat"在这个例子中,我们使用“\b”来表示单词的边界,以确保只替换以“at”结尾的单词。
二、使用中括号当我们需要对多个字符进行替换时,可以使用中括号。
中括号中的字符表示可以匹配任意一个字符。
比如,下面的正则表达式将匹配“bat”、“cat”和“hat”:"[bch]at"下面我们来看一些更有用的例子:1.替换所有数字为“#”符号搜索框中的正则表达式:"\d"替换框中的字符串:"#"在该正则表达式中,“\d”匹配所有数字字符。
2.仅替换转换小写字母包括“abc”的单词搜索框中的正则表达式:"([a-c])at\b"替换框中的字符串:"1og"在该正则表达式中,“([a-c])”表示一个包含abcd的字符集,然后使用“1”将该字符集分组,从而可以在替换框中通过“1”访问该字符集。
3.替换所有包含数字的字符串搜索框中的正则表达式:".*\d.*"替换框中的字符串:""在该正则表达式中,“.*”指代了0个或多个任意字符,加上“\d”表示匹配包含数字的字符串。
php判断是否是汉字的方法
php判断是否是汉字的方法PHP判断是否是汉字的方法介绍在开发过程中,我们经常需要判断一个字符是否为汉字。
本文将详细介绍使用PHP进行汉字判断的几种常用方法。
方法一:使用正则表达式1.使用preg_match()函数结合正则表达式进行判断。
2.正则表达式:/^[\x{4e00}-\x{9fa5}]$/u3.代码示例:function isChineseCharacter($char) {return preg_match('/^[\x{4e00}-\x{9fa5}]$/u', $char); }方法二:使用Unicode编码1.判断字符的Unicode编码是否在汉字范围内。
2.代码示例:function isChineseCharacter($char) {$unicode = mb_ord($char);return ($unicode >= 19968 && $unicode <= 40869);}方法三:使用系统函数1.判断字符的字节数是否大于1,来判断是否为汉字。
2.注意:此方法只适用于UTF-8编码。
3.代码示例:function isChineseCharacter($char) {return strlen($char) > 1;}方法四:使用字符集检测函数1.使用mb_detect_encoding()函数判断字符的字符集是否为UTF-8。
2.再判断字符的字节数是否大于1,来判断是否为汉字。
3.代码示例:function isChineseCharacter($char) {return strlen($char) > 1 && mb_detect_encoding($char, 'UTF-8', true);}方法五:使用Unicode范围判断1.判断字符的Unicode范围是否在汉字范围内。
php正则:匹配(),{},[]小括号,大括号,中括号里面的内容
php正则:匹配(),{},[]⼩括号,⼤括号,中括号⾥⾯的内容php正则:匹配(),{},[]⼩括号,⼤括号,中括号⾥⾯的内容⽐如有⼀段字符:$s='60c8{"code":"200","message":"success","data":[{"_id":"780521","time":1476768196,"position":{"long":108.90415,"lat":35.25623},"speed":495.677952,"anum":"B6552","atype":"A321","atypename":"Airbus A321-231","angle":"198","vspeed":"-576","devic 我要匹配,{}括号⾥⾯的内容,单独拿出来。
preg_match('/(?:\{)(.*)(?:\})/i', $s, $match);var_dump($match);说明:PHP使⽤正则表达式提取字符串中尖括号<>、⼩括号()、中括号[]、⼤括号{}中的字符⽰例,需要的朋友可以参考下$str="你好<我>(爱)[北京]{天安门}";echo f1($str); //返回你好echo f2($str); //返回我echo f3($str); //返回爱echo f4($str); //返回北京echo f5($str); //返回天安门function f1($str){$result = array();preg_match_all("/^(.*)(?:<)/i",$str, $result);return $result[1][0];}function f2($str){$result = array();preg_match_all("/(?:<)(.*)(?:>)/i",$str, $result);return $result[1][0];}function f3($str){$result = array();preg_match_all("/(?:\()(.*)(?:\))/i",$str, $result);return $result[1][0];}function f4($str){$result = array();preg_match_all("/(?:\[)(.*)(?:\])/i",$str, $result);return $result[1][0];}function f5($str){$result = array();preg_match_all("/(?:\{)(.*)(?:\})/i",$str, $result);return $result[1][0];}PS: (?:字符) 表⽰不捕获这个字符。
php正则匹配规则
PHP常用正则表达式大全(含中文)"^\d+$" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" //正整数"^((-\d+)|(0+))$" //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$" //负整数"^-?\d+$" //整数"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数"^(-?\d+)(\.\d+)?$" //浮点数"^[A-Za-z]+$" //由26个英文字母组成的字符串"^[A-Z]+$" //由26个英文字母的大写组成的字符串"^[a-z]+$" //由26个英文字母的小写组成的字符串"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串"^\w+$" //由数字、26个英文字母或者下划线组成的字符串"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" // Emil/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址匹配中文字符的正则表达式: [\一-\龥]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$元字符及其在正则表达式上下文中的行为:\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
PHP把空格、换⾏符、中⽂逗号等替换成英⽂逗号的正则
表达式
在开发的过程中,经常会遇到需要给别⼈提供⼀个输⼊框,然后别⼈输⼊⼀些ID,或者关键字的东西,例如wordpress的后台的标签输⼊框:
这个就是只是判断英⽂状态下的逗号,要是有⼈不⼩⼼输⼊了中⽂状态下的逗号怎么办?⼩数点怎么办?
于是我就⽤正则写了⼀个表达式,把带有空格换⾏符之类的替换成逗号。
把提交的id带有空格换⾏符之类的替换成逗号,然后⽤explode函数切换成数组。
复制代码代码如下:
$ids=$_POST["ID"];
$id= preg_replace("/(\n)|(\s)|(\t)|(\')|(')|(,)/" ,',' ,$ids);
$topicids = explode("," ,$tids);
这个是增加了⼩数点的过滤。
复制代码代码如下:
$ids = preg_replace("/(\n)|(\s)|(\t)|(\')|(')|(,)|(\.)/",',',$ids);
OK,经过这样处理后,就不会有问题了。
提⽰:其实,⼩编感觉⽤JS在提交前就处理掉这个问题,是⼀个更好的选择。
php数字正则
php数字正则PHP数字正则表达式是用来匹配数字的一种模式,通常用于验证输入的数据是否符合特定的格式要求。
在PHP中,数字正则表达式可以使用preg_match()函数进行匹配。
以下是一些常见的PHP数字正则表达式:1. 匹配整数:/^[0-9]+$/这个正则表达式可以匹配一个或多个数字,不包含小数点和负号。
2. 匹配浮点数:/^[0-9]+(\.[0-9]+)?$/这个正则表达式可以匹配一个或多个数字,包含一个可选的小数部分。
如果有小数部分,则必须以小数点开头,并且后面必须跟着至少一个数字。
3. 匹配负数:/^[-]?[0-9]+$/这个正则表达式可以匹配一个或多个数字,并允许负号出现在开头。
4. 匹配带千位分隔符的整数:/^([1-9]\d{0,2})(,\d{3})*$/这个正则表达式可以匹配带有千位分隔符的整数,例如1,000,000。
它使用逗号作为分隔符,并且只允许出现在三位连续的数字之间。
5. 匹配科学计数法表示的浮点数:/^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/这个正则表达式可以匹配使用科学计数法表示的浮点数,例如1.23e-4。
它允许数字前面出现正号或负号,并且可以包含小数部分和指数部分。
在使用PHP数字正则表达式时,需要注意以下几点:1. 使用preg_match()函数进行匹配时,需要传入两个参数:要匹配的正则表达式和要匹配的字符串。
2. 如果匹配成功,preg_match()函数会返回1,否则返回0。
3. 可以使用preg_match_all()函数进行全局匹配,它会返回所有匹配到的结果。
4. 可以使用preg_replace()函数将匹配到的字符串替换为指定的值。
PHP正则表达式笔记和实例
PHP正则表达式笔记和实例本⽂主要介绍如何在PHP使⽤正则表达式,并附带⼏个实例.这两天⼯作⽤到了正则表达式,发现⾃⼰已经忘记的差不多了,囧啊!找来以前的学习笔记,好好看了⼀下,⼜巩固了这些知识,⼯作算是完成了,不过正则要学的东西还是蛮多的,以下是整理的以前的笔记和⼀些实例!⽬录:笔记⼀、正则表达式的介绍:⼆、语法:三、正则表达式的组成部分:四、正则表达式的函数:实例1.正则表达式匹配2.正则的元字符匹配3.正则表达式匹配⽹页4正则的其他函数使⽤5.⼦存储(扩展)笔记:⼀、正则表达式的介绍:正则表达式是⽤于描述字符排列和匹配模式的⼀种语法规则。
它主要⽤于字符串的模式分割、匹配、查找及替换操作。
1. ⽤途:匹配、查找、替换、分割2. php提供了两套正则表达式函数库*1. Perl 兼容正则表达式函数(推荐使⽤)2. POSIX 扩展正则表达式函数⼆、语法:1. 表达式的格式: "/表达式/[修正符]"解释:其中"/"表⽰正则表达式的定界符,但是也可以是其他符号:如”#“,”!“注意:定界符不可以是字母、数字和斜线\。
像“#”、“|”、“!”等都可以的如:/.../ #...# |....|其中修正符是可选的,表⽰对表达式做额外的修饰。
三、正则表达式的组成部分:1. 原⼦是组成正则表达式的基本单位,在分析正则表达式时,应作为⼀个整体。
原⼦包括以下内容:> 单个字符、数字,如a-z,A-Z,0-9。
> 模式单元,如(ABC)可以理解为由多个原⼦组成的⼤的原⼦。
> 原⼦表,如 [ABC]。
> 重新使⽤的模式单元,如:\\1> 普通转义字符,如:\d, \D, \w> 转义元字符,如:\*,\.> 元字符*2. 元字符(具有特殊意义字符):[] 表⽰单个字符的原⼦表例如:[aoeiu] 表⽰任意⼀个元⾳字母[0-9] 表⽰任意⼀位数字[a-z][0-9]表⽰⼩写字和⼀位数字构成的两位字符[a-zA-Z0-9] 表⽰任意⼀位⼤⼩字母或数字[^] 表⽰除中括号内原⼦之外的任何字符是[]的取反例如:[^0-9] 表⽰任意⼀位⾮数字字符[^a-z] 表⽰任意⼀位⾮⼩写字母{m} 表⽰对前⾯原⼦的数量控制,表⽰是m次例如:[0-9]{4} 表⽰4为数字[1][3-8][0-9]{9} ⼿机号码{m,} 表⽰对前⾯原⼦的数量控制,表⽰是⾄少m次例如: [0-9]{2,} 表⽰两位及以上的数字{m,n}表⽰对前⾯原⼦的数量控制,表⽰是m到n次例如: [a-z]{6,8} 表⽰6到8位的⼩写字母* 表⽰对前⾯原⼦的数量控制,表⽰是任意次,等价于{0,}+ 表⽰对前⾯原⼦的数量控制,表⽰⾄少1次,等价于{1,}表⽰对前⾯原⼦的数量控制,表⽰0次或1次(可有可⽆)等价于{0,1}例如:正整数:[1-9][0-9]*整数:[\-]?[0-9]+email:() 表⽰⼀个整体原⼦,【还有⼀个⼦存储单元的作⽤】。
PHPpreg_replace()正则替换所有符合条件的字符串
PHPpreg_replace()正则替换所有符合条件的字符串需要我们⽤程序处理的数据并不总是预先以数据库思维设计的,或者说是⽆法⽤数据库的结构去存储的。
⽐如模版引擎解析模版、垃圾敏感信息过滤等等。
⼀般这种情况,我们⽤正则按我们的规则去匹配preg_match、替换preg_replace。
但⼀般的应⽤中,⽆⾮是些数据库CRUD,正则摆弄的机会很少。
根据前⾯说的,两种场景:统计分析,⽤匹配;处理⽤替换。
PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹配条件的元素。
复制代码代码如下:preg_replace (正则表达式, 替换成, 字符串, 最⼤替换次数【默认-1,⽆数次】, 替换次数)⼤部分语⾔的正则表达式都是差不多的,不过也有细微的差异。
PHP 正则表达式正则字符正则解释\将下⼀个字符标记为⼀个特殊字符、或⼀个原义字符、或⼀个向后引⽤、或⼀个⼋进制转义符。
例如,“\n”匹配字符“n”。
“\\n”匹配⼀个换⾏符。
序列“\\”匹配“\”⽽“\(”则匹配“(”。
^匹配输⼊字符串的开始位置。
如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$匹配输⼊字符串的结束位置。
如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
*匹配前⾯的⼦表达式零次或多次。
例如,zo*能匹配“z”以及“zoo”。
*等价于{0,}。
+匹配前⾯的⼦表达式⼀次或多次。
例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。
+等价于{1,}。
匹配前⾯的⼦表达式零次或⼀次。
例如,“do(es)?”可以匹配“does”或“does”中的“do”。
?等价于{0,1}。
{n}n是⼀个⾮负整数。
匹配确定的n次。
例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
php判断数值不为小数的方法
php判断数值不为小数的方法使用PHP判断数值是否为小数的方法在PHP中,判断一个数值是否为小数可以使用一些内置函数和运算符来实现。
下面将介绍几种常用的方法。
方法一:使用取余运算符取余运算符(%)可以用来判断一个数值是否为整数。
当一个数值除以1的余数为0时,即可判断该数值为整数;当余数不为0时,则可判断该数值为小数。
示例代码如下:```phpfunction isDecimal($num) {return $num % 1 !== 0;}// 测试$num1 = 10;$num2 = 10.5;if (isDecimal($num1)) {echo $num1 . "是小数";} else {echo $num1 . "是整数";}if (isDecimal($num2)) {echo $num2 . "是小数";} else {echo $num2 . "是整数";}```方法二:使用正则表达式正则表达式是一种强大的模式匹配工具,可以用来判断一个字符串是否符合特定的格式。
在这里,可以使用正则表达式来判断一个字符串是否为小数。
示例代码如下:```phpfunction isDecimal($num) {return preg_match("/^\d+\.\d+$/", $num);}// 测试$num1 = "10";$num2 = "10.5";if (isDecimal($num1)) {echo $num1 . "是小数";} else {echo $num1 . "是整数";}if (isDecimal($num2)) {echo $num2 . "是小数";} else {echo $num2 . "是整数";}```方法三:使用数值转换PHP提供了一些函数来进行数值转换,例如intval()函数可以将一个数值转换为整数,floatval()函数可以将一个数值转换为浮点数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PHP 常用正则表达式正则平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:"^\d+$"//非负整数(正整数+ 0)"^[0-9]*[1-9][0-9]*$"//正整数"^((-\d+)|(0+))$"//非正整数(负整数+ 0)"^-[0-9]*[1-9][0-9]*$"//负整数"^-?\d+$"//整数"^\d+(\.\d+)?$"//非负浮点数(正浮点数+ 0)"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+ 0)"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数"^(-?\d+)(\.\d+)?$"//浮点数"^[A-Za-z]+$"//由26个英文字母组成的字符串"^[A-Z]+$"//由26个英文字母的大写组成的字符串"^[a-z]+$"//由26个英文字母的小写组成的字符串"^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串"^\w+$"//由数字、26个英文字母或者下划线组成的字符串"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"//Emil/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$元字符及其在正则表达式上下文中的行为:\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。
^ 匹配输入字符串的开始位置。
如果设置了RegExp 对象的Multiline 属性,^ 也匹配’\n’或’\r’之后的位置。
$ 匹配输入字符串的结束位置。
如果设置了RegExp 对象的Multiline 属性,$ 也匹配’\n’或’\r’之前的位置。
* 匹配前面的子表达式零次或多次。
+ 匹配前面的子表达式一次或多次。
+ 等价于{1,}。
? 匹配前面的子表达式零次或一次。
? 等价于{0,1}。
{n} n 是一个非负整数,匹配确定的n 次。
{n,} n 是一个非负整数,至少匹配n 次。
{n,m} m 和n 均为非负整数,其中n <= m。
最少匹配n 次且最多匹配m 次。
在逗号和两个数之间不能有空格。
? 当该字符紧跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。
非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。
. 匹配除"\n" 之外的任何单个字符。
要匹配包括’\n’在内的任何字符,请使用象’[.\n]’的模式。
(pattern) 匹配pattern 并获取这一匹配。
(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
(?=pattern) 正向预查,在任何匹配pattern 的字符串开始处匹配查找字符串。
这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
(?!pattern) 负向预查,与(?=pattern)作用相反x|y 匹配x 或y。
[xyz] 字符集合。
[^xyz] 负值字符集合。
[a-z] 字符范围,匹配指定范围内的任意字符。
[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。
\cx 匹配由x指明的控制字符。
\d 匹配一个数字字符。
等价于[0-9]。
\D 匹配一个非数字字符。
等价于[^0-9]。
\f 匹配一个换页符。
等价于\x0c 和\cL。
\n 匹配一个换行符。
等价于\x0a 和\cJ。
\r 匹配一个回车符。
等价于\x0d 和\cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。
等价于[ \f\n\r\t\v]。
\S 匹配任何非空白字符。
等价于[^ \f\n\r\t\v]。
\t 匹配一个制表符。
等价于\x09 和\cI。
\v 匹配一个垂直制表符。
等价于\x0b 和\cK。
\w 匹配包括下划线的任何单词字符。
等价于’[A-Za-z0-9_]’。
\W 匹配任何非单词字符。
等价于’[^A-Za-z0-9_]’。
\xn 匹配n,其中n 为十六进制转义值。
十六进制转义值必须为确定的两个数字长。
\num 匹配num,其中num是一个正整数。
对所获取的匹配的引用。
\n 标识一个八进制转义值或一个后向引用。
如果\n 之前至少n 个获取的子表达式,则n 为后向引用。
否则,如果n 为八进制数字(0-7),则n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个后向引用。
如果\nm 之前至少有is preceded by at least nm 个获取得子表达式,则nm 为后向引用。
如果\nm 之前至少有n 个获取,则n 为一个后跟文字m 的后向引用。
如果前面的条件都不满足,若n 和m 均为八进制数字(0-7),则\nm 将匹配八进制转义值nm。
\nml 如果n 为八进制数字(0-3),且m 和l 均为八进制数字(0-7),则匹配八进制转义值nml。
\un 匹配n,其中n 是一个用四个十六进制数字表示的Unicode字符。
匹配中文字符的正则表达式:[u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]匹配空行的正则表达式:n[s| ]*r匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/匹配首尾空格的正则表达式:(^s*)|(s*$)匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?利用正则表达式限制网页表单里的文本框输入内容:用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA 5]/g,''))"用正则表达式限制只能输入全角字符:onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFF F]/g,''))"用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^d] /g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W] /g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"=========常用正则式匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s| ]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?sql语句:^(select|drop|delete|create|update|insert).*$1、非负整数:^\d+$2、正整数:^[0-9]*[1-9][0-9]*$3、非正整数:^((-\d+)|(0+))$4、负整数:^-[0-9]*[1-9][0-9]*$5、整数:^-?\d+$6、非负浮点数:^\d+(\.\d+)?$7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$9、负浮点数:^(-((正浮点数正则式)))$10、英文字符串:^[A-Za-z]+$11、英文大写串:^[A-Z]+$12、英文小写串:^[a-z]+$13、英文字符数字串:^[A-Za-z0-9]+$14、英数字加下划线串:^\w+$15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$17、邮政编码:^[1-9]\d{5}$18、中文:^[\u0391-\uFFE5]+$19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$21、双字节字符(包括汉字在内):^\x00-\xff22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>24、匹配空行:\n[\s| ]*\r25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)29、提取信息中的中国手机号码:(86)*0*13\d{9}30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}31、提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+34、提取信息中的任何数字:(-?\d*)(\.\d+)?35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)36、电话区号:/^0\d{2,3}$/37、腾讯QQ号:^[1-9]*[1-9][0-9]*$38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 这里详细的介绍了PHP正则表达式的原理和用法,同时也给出了一些比较常用的做网站中用到的正则表达式。