日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...

發(fā)布時(shí)間:2025/3/15 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

跟著視頻的講解,也親手敲了這么一個(gè)正則表達(dá)式的類,感覺很不錯(cuò),真是溫故而知新,本來想把注釋寫的逼格高一點(diǎn)的,今天晚了有點(diǎn)累,先簡(jiǎn)單的寫一下,有時(shí)間了再完善完善。

class?regexTool{

//內(nèi)置一些常用的正則表達(dá)式

private?$validate=array(

'require'???=>??'/.+/',

'email'?????=>??'/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',

'url'???????=>??'/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/',

'currency'??=>??'/^\d+(\.\d+)?$/',

'number'????=>??'/^\d+$/',

'zip'???????=>??'/^\d{6}$/',

'integer'???=>??'/^[-\+]?\d+$/',

'double'????=>??'/^[-\+]?\d+(\.\d+)?$/',

'english'???=>??'/^[A-Za-z]+$/',

'qq'=>'/^\d{5,11}$/',

'mobile'=>'/^1(3|4|5|7|8)\d{9}$/',

);

/*******************

*定義返回的結(jié)果,是定義是否匹配還是要得到匹配的結(jié)果

*當(dāng)為false的時(shí)候驗(yàn)證結(jié)果,是true?or?false??即是否匹配到

*****************/

private?$returnMatchResult=false;

//定義修正模式,默認(rèn)為空

private?$fixMode=null;

//匹配的結(jié)果數(shù)組

//驗(yàn)證匹配的結(jié)果,如果成功是true?否則?是false

private?$isMatch=false;

//用于存放匹配到的數(shù)據(jù)

private?$matches?=?array();

//構(gòu)造函數(shù)?兩個(gè)參數(shù)?定義返回結(jié)果類型,和修正模式

public?function?__construct($returnMatchResult=false,$fixMode=null){

$this->returnMatchResult=$returnMatchResult;//賦值給成員屬性

$this->fixMode=$fixMode;

}

/********************************

*核心匹配方法第一個(gè)參數(shù)正則表達(dá)式,第二個(gè)是目標(biāo)數(shù)據(jù)

*$pattern?如果在成員屬性$validate中,就直接使用現(xiàn)成的表達(dá)式,不存在就當(dāng)他自己是表達(dá)式

**************************/

private?function?regex($pattern,$subject){

if(array_key_exists(strtolower($pattern),?$this->validate)){

$pattern=$this->validate[$pattern].$this->fixMode;

}

//判斷返回類型

$this->returnMatchResult?

preg_match_all($pattern,?$subject,?$this->matches):

$this->isMatch=preg_match($pattern,?$subject)===1;

return?$this->getRegexResult();

}

//根據(jù)getRegexResult,返回不同的結(jié)果

private?function?getRegexResult(){

if($this->returnMatchResult){

return?$this->matches;

}else{

return?$this->isMatch;

}

}

//切換返回的類型,比如實(shí)例化的時(shí)候返回布爾值,現(xiàn)在突然想要匹配數(shù)組了

public?function?toggleReturnType($bool=null){

if(empty($bool)){

$this->returnMatchResult=!$this->returnMatchResult;

}else{

$this->returnMatchResult=is_bool($bool)?$bool:(bool)$bool;

}

}

//切換休整模式,理由同上

public?function?setFixMode($fixMode){

$this->fixMode=$fixMode;

}

//下面可以定義一些常用的驗(yàn)證方法

//非空驗(yàn)證方法

public?function?noEmpty($str){

return?$this->regex('require',$str);

}

//驗(yàn)證email

public?function?isEmail($str){

return?$this->regex('email',$str);

}

//驗(yàn)證手機(jī)號(hào)

public?function?isMobile($str){

return?$this->regex('mobile',$str);

}

//用戶自定義正則表達(dá)式

public?function?check($pattern,$subject){

return?$this->regex($pattern,$subject);

}

}

//實(shí)際操作一下,效果還是棒棒噠^_^

$regex?=?new?regexTool();

$regex?->?setFixMode('U');

$isEmail=$regex?->?isEmail('adfasda@qq.com');

$isMobile=$regex?->?isMobile('56481513');

var_dump($isEmail);

echo?'


';

var_dump($isMobile);

經(jīng)過測(cè)試了,應(yīng)該沒有問題。

總結(jié)

以上是生活随笔為你收集整理的php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。