php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...
跟著視頻的講解,也親手敲了這么一個正則表達式的類,感覺很不錯,真是溫故而知新,本來想把注釋寫的逼格高一點的,今天晚了有點累,先簡單的寫一下,有時間了再完善完善。
class?regexTool{
//內置一些常用的正則表達式
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}$/',
);
/*******************
*定義返回的結果,是定義是否匹配還是要得到匹配的結果
*當為false的時候驗證結果,是true?or?false??即是否匹配到
*****************/
private?$returnMatchResult=false;
//定義修正模式,默認為空
private?$fixMode=null;
//匹配的結果數組
//驗證匹配的結果,如果成功是true?否則?是false
private?$isMatch=false;
//用于存放匹配到的數據
private?$matches?=?array();
//構造函數?兩個參數?定義返回結果類型,和修正模式
public?function?__construct($returnMatchResult=false,$fixMode=null){
$this->returnMatchResult=$returnMatchResult;//賦值給成員屬性
$this->fixMode=$fixMode;
}
/********************************
*核心匹配方法第一個參數正則表達式,第二個是目標數據
*$pattern?如果在成員屬性$validate中,就直接使用現成的表達式,不存在就當他自己是表達式
**************************/
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();
}
//根據getRegexResult,返回不同的結果
private?function?getRegexResult(){
if($this->returnMatchResult){
return?$this->matches;
}else{
return?$this->isMatch;
}
}
//切換返回的類型,比如實例化的時候返回布爾值,現在突然想要匹配數組了
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;
}
//下面可以定義一些常用的驗證方法
//非空驗證方法
public?function?noEmpty($str){
return?$this->regex('require',$str);
}
//驗證email
public?function?isEmail($str){
return?$this->regex('email',$str);
}
//驗證手機號
public?function?isMobile($str){
return?$this->regex('mobile',$str);
}
//用戶自定義正則表達式
public?function?check($pattern,$subject){
return?$this->regex($pattern,$subject);
}
}
//實際操作一下,效果還是棒棒噠^_^
$regex?=?new?regexTool();
$regex?->?setFixMode('U');
$isEmail=$regex?->?isEmail('adfasda@qq.com');
$isMobile=$regex?->?isMobile('56481513');
var_dump($isEmail);
echo?'
';
var_dump($isMobile);
經過測試了,應該沒有問題。
總結
以上是生活随笔為你收集整理的php 一个简单正则表达式,PHP中正则表达式回顾(3)--编写一个简单的正则表达式工具类...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php银行转账,php+mysqli事务
- 下一篇: 导出oracle sequences,C