最常用的PHP正则表达式收集整理,日常收集整理php正则表达式

 百家乐-前端     |      2020-03-24 05:53

正则表明式用于字符串管理、表单验证等场地,实用高效。本文采摘了部分常用的表明式:

以下是关于作者给我们何足为奇采撷收拾php正则表明式,具体内容请看下文详明吧

$str = preg_replace("/(<a.*?>)(.*?)(</a>)/", '123', $str);
$str = preg_replace("/(<a.*?>)(.*?)(</a>)/", '123', $str);

中间用了四个子形式(每一个圆括号中剧情为二个子情势),第八个是链接开首标签,第4个是链接文本,第七个是</a>

中间用了七个子方式(各样圆括号中内容为一个子格局),第4个是链接开始标签,第1个是链接文本,第4个是</a>

下一场第三个参数中1、2、3就代表那多个部分,要替换来什么体统还不轻巧?

下一场第3个参数中1、2、3就表示那多个部分,要替换到什么体统还不简单?

赢得页面中的全数链接地址的PHP函数

获得页面中的全数链接地址的PHP函数

上面这几个用PHP写的函数,能够博得大肆的字符串$string中的全体链接地址($string能够是从多少个HTML页面文件一向读抽出来的字符串卡塔尔国,结果保存在多少个数组中再次来到.该函数自动把电子邮件地址消灭在外,何况回去的数组中不会有再次成分.

上边那一个用PHP写的函数,可以收获率性的字符串$string中的全部链接地址($string能够是从叁个HTML页面文件直接读抽取来的字符串State of Qatar,结果保存在叁个数组中重临.该函数自动把电子邮件地址清除在外,何况回去的数组中不会有再一次成分.

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])(["']*)[^>]*>","\3t", $string); 

$output[0] = strtok($string, "t"); 
while(($temp = strtok("t"))) 
{ 
if($temp && !in_array($temp, $output)) 
$output[++$i] = $temp; 
} 

return $output; 
}
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])(["']*)[^>]*>","\3t", $string); 
$output[0] = strtok($string, "t"); 
while(($temp = strtok("t"))) 
{ 
if($temp && !in_array($temp, $output)) 
$output[++$i] = $temp; 
} 
return $output; 
}

以下是以PHP的语法所写的演示

以下是以PHP的语法所写的身教重于言教

验证字符串是不是只含数字与Ukraine语,字符串长度并在4~16个字符之间

验证字符串是或不是只含数字与瑞典语,字符串长度并在4~17个字符之间

<?php 
$str = 'a1234'; 
if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) { 
echo "验证成功";} else { 
echo "验证失敗";}?>
<?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 "验证失敗";} 
?>
<?php 
$str = 'a1234'; 
if (preg_match("^(?:d{15}|d{18})$", $str)) { 
echo "验证成功"; 
} else { 
echo "验证失敗";} 
?>

上边包车型客车代码实现文字中的代码块,功效犹如您在本子之家见到的代码同样。

上面包车型客车代码完毕文字中的代码块,作用就疑似您在本子之家见到的代码同样。

function codedisp($code) { 
global $discuzcodes; 
$discuzcodes['pcodecount']++; 
$code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[nr]*(.+?)[nr]*$/is", "\1", $code))); 
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<br><div class="msgheader"><div class="right"><a href="###" class="smalltxt" onclick="copycode($('phpcode$discuzcodes[codecount]'));">[复制此代码]</a></div>代码如下:</div><div class="msgborder" id="phpcode$discuzcodes[codecount]">".fhtml2($code)."</div><br>"; 
$discuzcodes['codecount']++; 
return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]"; 
} 
$message = preg_replace("/s*[code](.+?)[/code]s*/ies", "codedisp('\1')", $message); 
$message = preg_replace("/s*[html](.+?)[/html]s*/ies", "htmldisp('\1')", $message);
function codedisp($code) { 
global $discuzcodes; 
$discuzcodes['pcodecount']++; 
$code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[nr]*(.+?)[nr]*$/is", "\1", $code))); 
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "<br><div class="msgheader"><div class="right"><a href="###" class="smalltxt" onclick="copycode($('phpcode$discuzcodes[codecount]'));">[复制此代码]</a></div>代码如下:</div><div class="msgborder" id="phpcode$discuzcodes[codecount]">".fhtml2($code)."</div><br>"; 
$discuzcodes['codecount']++; 
return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]"; 
} 
$message = preg_replace("/s*[code](.+?)[/code]s*/ies", "codedisp('\1')", $message); 
$message = preg_replace("/s*[html](.+?)[/html]s*/ies", "htmldisp('\1')", $message);

协作国语字符的正则表明式: [u4e00-u9fa5]
评注:相配华语还真是个胃痛的事,有了那个表达式就好办了

合营华语字符的正则表明式: [u4e00-u9fa5]

合营双字节字符(包罗汉字在内卡塔尔国:[^x00-xff]
评注:能够用来计量字符串的长短(叁个双字节字符长度计2,ASCII字符计1)

评注:相称国语还真是个头痛的事,有了那些表达式就好办了

相配空白行的正则表明式:ns*r
评注:可以用来删除空白行

合作双字节字符(包罗汉字在内卡塔尔国:[^x00-xff]

相配HTML标志的正则表达式:<(S*?)[^>]*>.*?</1>|<.*? />
评注:网上流传的版本太不好,下边那么些也然而能合营部分,对于复杂的嵌套标识依然不恐怕

评注:能够用来计量字符串的尺寸(四个双字节字符长度计2,ASCII字符计1)

匹配首尾空白字符的正则表明式:^s*|s*$
评注:能够用来删除行首行尾的空白字符(满含空格、制表符、换页符等等卡塔尔,特别实用的表达式

相配空白行的正则表达式:ns*r

相称Email地址的正则表明式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
评注:表单验证时很实用

评注:能够用来删除空白行

合作网站UENVISIONL的正则表明式:[a-zA-z]+://[^s]*
评注:英特网流传的本子效果超级轻巧,上边那一个基本可以满意供给

相配HTML标识的正则表明式:<(S*?)[^>]*>.*?</1>|<.*? />

同盟帐号是还是不是合法(字母开头,允许5-16字节,允许字母数字下划线卡塔尔:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

评注:网络流传的版本太不佳,上边这么些也然而能合作部分,对于复杂的嵌套标识仍旧无法

协作国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配情势如 0511-4405222 或 021-87888822

相称首尾空白字符的正则表明式:^s*|s*$

相称TencentQQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

评注:能够用来删除行首行尾的空白字符(包含空格、制表符、换页符等等卡塔尔,非常管用的表明式

非常中中原人民共和国邮编:[1-9]d{5}(?!d)
评注:中中原人民共和国邮编为6位数字

匹配Email地址的正则表明式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配居民身份证:d{15}|d{18}
评注:中国的居民身份证为15位或18个人

评注:表单验证时很实用

匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用

匹配网站U陆风X8L的正则表明式:[a-zA-z]+://[^s]*

相称特定数字:

评注:英特网流传的版本效果很有限,上面这些核心得以知足须求

^[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)

协作帐号是还是不是合法(字母开首,允许5-16字节,允许字母数字下划线卡塔尔:^[a-zA-Z][a-zA-Z0-9_]{4,15}$

评注:管理多量数码时有用,具体使用时注意改正

评注:表单验证时很实用

合营特定字符串:

相称本国电话号码:d{3}-d{8}|d{4}-d{7}

^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
 ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
 ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
 ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
 ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

评注:相配情势如 0511-4405222 或 021-87888822

上边是有的特殊字符:

相配TencentQQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

正则表明式中的特殊字符: (学习参谋书-<<精通正则表明式>>)

相配中夏族民共和国邮编:[1-9]d{5}(?!d)

字符
意义:对于字符,日常表示按字面意思,提出接着的字符为特殊字符,不作解释。
举个例子说:/b/匹配字符'b',通过在b 前面加一个反斜杠,也正是/b/,则该字符变成特殊字符,表示
非常三个单词的分割线。
或者:
对此多少个字符,经常表明是别出新裁的,提出紧接着的字符不是特种的,而应当按字面解释。
例如:*是一个特殊字符,相配任性个字符(包罗0个字符卡塔尔(قطر‎;比如:/a*/意味匹配0个或八个a。
为了同盟字面上的*,在a后面加一个反斜杠;举个例子:/a*/匹配'a*'。

评注:中国邮编为6位数字

字符^
意思:表示卓殊的字符必需在最终边。
比方:/^A/不宽容"an A,"中的'A',但特别"An A."中最前边的'A'。

合作身份ID:d{15}|d{18}

字符$
意思:与^相仿,相称最末的字符。
例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。

评注:中中原人民共和国的身份ID为公斤个人或十八位

字符*
意义:匹配*眼前的字符0次或n次。
例如:/bo*/相称"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但不合作"A goat g
runted"中的任何字符。

匹配ip地址:d+.d+.d+.d+

字符+
意思:相配+号前边的字符1次或n次。等价于{1,}。
举个例子:/a+/相配"candy"中的'a'和"caaaaaaandy."中的全数'a'。

评注:提取ip地址时有用

字符?
意义:相配?后边的字符0次或1次。
例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。

合作特定数字:

字符.
意义:(小数点State of Qatar相配除换行符外的保有单个的字符。
比方说:/.n/相称"nay, an apple is on the tree"中的'an'和'on',但不相配'nay'。

^[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$  //相配非正浮点数(负浮点数

字符(x)
意义:相配'x'并记录相配的值。
比方:/(fooState of Qatar/相配和著录"foo bar."中的'foo'。相称子串能被结果数组中的素[1], ..., [n] 返
回,或被RegExp对象的质量$1, ..., $9重返。

  • 0)

字符x|y
意义:匹配'x'或者'y'。
例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。

评注:管理大量数额时有用,具体选拔时注意改过

字符{n}
意义:这里的n是叁个正整数。相配后面包车型地铁n个字符。
比方说:/a{2}/不包容"candy,"中的'a',但相当"caandy," 中的全数'a'和"caaandy."中前边的多少个
'a'。

相称特定字符串:

字符{n,}
意思:这里的n是二个正整数。相配最少n个后边的字符。
诸如:/a{2,}不相同盟"candy"中的'a',但极其"caandy"中的全数'a'和"caaaaaaandy."中的全部'a'

^[A-Za-z]+$  //相称由二十六个塞尔维亚语字母组成的字符串
 ^[A-Z]+$  //匹配由三十多个爱沙尼亚语字母的大写组成的字符串
 ^[a-z]+$  //相称由30个葡萄牙共和国语字母的小写组成的字符串
 ^[A-Za-z0-9]+$  //相配由数字和二十六个Lithuania语字母组成的字符串
 ^w+$  //相称由数字、贰15个斯洛伐克语字母也许下划线组成的字符串

字符{n,m}
意义:这里的n和m都是正整数。相称起码n个最多m个前边的字符。
诸如:/a{1,3}/不相配"cndy"中的任何字符,但相称"candy,"中的'a',"caandy," 中的后面四个
'a'和"caaaaaaandy"中前边的两个'a',注意:纵然"caaaaaaandy" 中有为数不菲个'a',但只十三分前面包车型的士三
个'a'即"aaa"。

上面是有的特殊字符:

字符[xyz]
意义:一字符列表,相称列出中的任一字符。你能够由此连字符-建议一个字符范围。
例如:[abcd]跟[a-c]相通。它们相配"brisket"中的'b'和"ache"中的'c'。

正则表达式中的特殊字符: (学习参谋书-<<精晓正则表明式>>)

字符[^xyz]
意义:一字符补集,约等于说,它相称除了列出的字符外的兼具东西。 你能够运用连字符-提出一
字符范围。
例如:[^abc]和[^a-c]万分,它们最先相配"brisket"中的'r'和"chop."中的'h'。

字符
意义:对于字符,平时表示按字面意思,提议接着的字符为特殊字符,不作解释。
比如:/b/相称字符'b',通过在b 前边加二个反斜杠,也便是/b/,则该字符形成特殊字符,表示
合营二个单词的分割线。
或者:
对于多少个字符,平日表达是例外的,建议紧接着的字符不是破例的,而应该按字面解释。
例如:*是三个特殊字符,相配大五个字符(满含0个字符卡塔尔;举例:/a*/意味相配0个或八个a。
为了合营字面上的*,在a前面加三个反斜杠;举例:/a*/匹配'a*'。

字符
意义:相称三个空格(不要与b混淆State of Qatar

字符^
意思:表示万分的字符必需在最终面。
比方说:/^A/不相配"an A,"中的'A',但极其"An A."中最前头的'A'。

字符b
意思:相称贰个单词的分水线,比方三个空格(不要与混淆卡塔尔(قطر‎
例如:/bnw/匹配"noonday"中的'no',/wyb/匹配"possibly yesterday."中的'ly'。

字符$
意思:与^相近,相称最末的字符。
例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。

字符B
意思:相配一个单词的非分水岭
例如:/wBn/匹配"noonday"中的'on',/yBw/匹配"possibly yesterday."中的'ye'。

字符*
意义:匹配*眼下的字符0次或n次。
例如:/bo*/相配"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但差别盟"A goat g
runted"中的任何字符。

字符cX
意义:这里的X是叁个调整字符。匹配叁个字符串的调节字符。
举个例子说:/cM/相配一个字符串中的control-M。

字符+
意思:相称+号前边的字符1次或n次。等价于{1,}。
举例:/a+/相配"candy"中的'a'和"caaaaaaandy."中的所有'a'。

字符d
意思:相称叁个数字,等价于[0-9]。
例如:/d/或/[0-9]/匹配"B2 is the suite number."中的'2'。

字符?
意义:匹配?前边的字符0次或1次。
例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。

字符D
意义:相称任何的非数字,等价于[^0-9]。
例如:/D/或/[^0-9]/匹配"B2 is the suite number."中的'B'。

字符.
意思:(小数点卡塔尔相称除换行符外的具备单个的字符。
诸如:/.n/相称"nay, an apple is on the tree"中的'an'和'on',但不相称'nay'。

字符f
意义:匹配叁个表单符

字符(x)
意思:相配'x'并记下相称的值。
例如:/(fooState of Qatar/相配和记录"foo bar."中的'foo'。相称子串能被结果数组中的素[1], ..., [n] 返
回,或被RegExp对象的习性$1, ..., $9重临。

字符n
意思:相配一个换行符

字符x|y
意义:匹配'x'或者'y'。
例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。

上一篇:没有了 下一篇:Linux下给PHP安装amqp扩展