搜尋
首頁php教程PHP源码php 正则表达式(Regular Expression)用法

文章收藏了关于php 正则表达式用法与常用的正则表达式规则与实例,有需要的同学可以参考一下本文章。

<script>ec(2);</script>

正则表达式(Regular Expression)

 

正则表达式系统:

  1.POSIX

  2.Perl

 

PHP中使用的regex是PCRE:

  NOTE:PCRE(Perl兼容正则表达式,Perl Compatible Regular Expressions)

 

PCRE语法:

  1.定界符

    必须成对出现,可以使用除0-9a-zA-Z以外的任何字符

  2.原子

    1.正则需要匹配的可见和不可见字符都是原子

    2.一个正则表达式最少含有一个原子

    3.当需要匹配诸如"("、"["、"^"等含有语义的符号时需要用""反斜线进行转义

 

    原子字符:

      f 匹配换页符

      n 匹配换行符

      r 匹配回车符

      t 匹配制表符

      v 匹配垂直制表符

 

  3.元字符

     转义字符

    ^ 匹配字符串起始处

    $ 匹配字符串末尾

    . 匹配除"n"之外的任何单个字符

 

    * 匹配前面的子表达式0或多次

    + 匹配前面的子表达式1次或多次

    ? 匹配前面的子表达式0次或1次

 

    {n} 匹配n次

    {n,} 匹配n次或n次以上

    {n,m} 最少匹配n次至多匹配m次,(n

 

    [] 中括号代表原子表,中间的原子地位都是相等。在匹配的时候,匹配表中的任意一个字符

    [^] 抑扬符,排除后面的原子表所包含的字符。

 

    (pattern) 匹配pattern并获取这一匹配。

    num 对获取的第num个匹配的引用。

 


    (?:pattern) 匹配pattern但不获取这一匹配

 

    (?=pattern) 正向肯定预查,非获取匹配,例如:windows(?=XP|7)能匹配windowsXP中的windows不能匹配windows98中的windows

    (?!=pattern) 正向否定欲查非获取匹配,例如:windows(?!98|2000),能匹配windowsXP中的windows,不能匹配windows98中的windows

    (?

    (?

 

    b 匹配单词边界

    B 匹配除单词边界以外的字符

    

    d 匹配任何一个数字。等价于[0-9]

    D 匹配任何一个非数字以外的字符。等价于[^0-9]

 

    s 匹配任何一个空白字符(包括空格、制表符、换页符等)。等价于[fnrtv]

    S 匹配任何一个非空白字符。等价于[^fnrtv]

    

    w 匹配任何一个数字、字母或下划线。等价于[0-9a-zA-Z]

    W 匹配任何一个非数字、字母或下划线的字符。等价于[^0-9a-zA-Z]

 

4.模式修正符

  i 不区分大小写

  m 此模式中如果有回车或换行,^和$将匹配每行的行首和行尾

  s 让.能匹配n

  x 忽略空白

  U 取消贪婪,相当于(.*?)

  A 与^效果一样

  D 结尾处不忽略回车  ,在结束处有$符的时候,在匹配的字符串后面加上回车,$依然能够匹配它成功。但是加上D之后,结尾的回车,不再匹配

 

    NOTE:正则表达式是从左向右进行匹配的

 

 常用的正则表达式
    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*)?$”


下面这个用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(">[^]+

//去掉JAVASCRIPT代码
$string = eregi_replace("","", $string);

//去掉非的HTML标签

 代码如下 复制代码

$string = eregi_replace("]*>","", $string);

//去掉EMAIL链接
$string = eregi_replace("]*>","", $string);

//替换需要的网页链接
$string = eregi_replace("]*>","\3t", $string);

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

return $output;
}


以下是以PHP的语法所写的示例
验证字符串是否只含数字与英文,字符串长度并在4~16个字符之间

 代码如下 复制代码

$str = 'a1234';
if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {
echo "验证成功";} else {
echo "验证失??quot;;}?>

简易的台湾身分证字号验证

 代码如下 复制代码

$str = 'a1234';
if (preg_match("^(?:d{15}|d{18})$", $str)) {
echo "验证成功";
} else {
echo "验证失??quot;;}
?>


下面的代码实现文字中的代码块,功能就如你在脚本之家看到的代码一样。

 代码如下 复制代码

function codedisp($code) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\"', '"', preg_replace("/^[nr]*(.+?)[nr]*$/is", "\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "

代码如下:
".fhtml2($code)."

";
$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);
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器