编写一个简单的正则表达式工具类

跟着视频的讲解,也亲手敲了这么一个正则表达式的类,感觉很不错,真是温故而知新,本来想把注释写的逼格高一点的,今天晚了有点累,先简单的写一下,有时间了再完善完善。

<?php

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;

	//构造函数 两个参数 定义返回结果类型,和修正模式
	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(‘[email protected]‘);
	$isMobile=$regex -> isMobile(‘56481513‘);
	var_dump($isEmail);
	echo ‘<hr/>‘;
	var_dump($isMobile);

经过测试了,应该没有问题。

时间: 2024-10-25 04:44:30

编写一个简单的正则表达式工具类的相关文章

一个简单的Hibernate工具类HibernateUtil

HibernateUtil 1 package com.wj.app.util; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 import org.hibernate.service.ServiceRegistry; 7 import org.hibernate.service.ServiceRegistry

使用Resources类搭建Unity简单的资源管理工具类

Unity资源加载的方式有: 1.脚本拖拽(本地) 2.Resources加载(本地) ★ 3.AssetBundle加载(本地,远程[www])★ 本篇将使用Resources类搭建一个简单的资源管理工具类 Resources是Unity下的特殊文件夹,使用需自行创建Resources文件夹(命名必须正确) 使用Resources文件夹就需要用到Resources类的一些方法,如下: Resources类 Load 从Resources文件夹加载单个资源(可指定类型) LoadAll 从Res

【C++】编写一个简单的类。包含构造函数,成员函数等。

<pre name="code" class="cpp">//编写一个简单的类.包含构造函数,成员函数等. #include <iostream> using namespace std; class Rec { public: Rec(int l,int w); int Area(); void Print(); private: int length,wide; }; Rec::Rec(int l,int w) { length=l; w

练习题,使用多线程编写一个简单的文本处理工具

一. 练习题要求: 编写一个简单的文本处理工具,具备三个任务,一个接收用户输入,一个将用户输入的内容格式化成大写,一个将格式化后的结果存入文件 二. 分析: 三个任务,那就是三个线程.分别的输入,转换,写入,这3个线程.那么写入的输入,其他线程怎么取出?我们可以使用Queue队列,把用户输入的字符写入到队列中,然后再进行转换.转换完成后,再写入到另外一个队列中.等待最后写入文件三.实现 1 from threading import Thread 2 from multiprocessing i

Swift语言编写一个简单的条形码扫描APP

swift语言编写一个简单的条形码扫描APP 原文地址:appcoda 在处理职员在杂货店的收银台排了很长的队伍,在机场帮助检查背包和旅客,或者在主要的食品供应商,协助处理乏味的存货清单过程,条形码扫描是很简单的处理工具.实际上,他们已经用了这个办法来解决消费者在智能购物,图书分类,等其他目的.因此,让我们来制作一个iPhone版本的条形码扫描工具吧! 对我们来说幸运的是,苹果已经制作了条形码扫描的程序,实现它是一件很简单的事情.我们将要研究进入AV Foundation框架的世界,组建APP,

手把手教你编写一个简单的PHP模块形态的后门

看到Freebuf 小编发表的用这个隐藏于PHP模块中的rootkit,就能持久接管服务器文章,很感兴趣,苦无作者没留下PoC,自己研究一番,有了此文 0×00. 引言 PHP是一个非常流行的web server端的script语言.目前很多web应用程序都基于php语言实现.由于php是个开源软件并易于扩展,所以我们可以通过编写一个PHP模块(module 或者叫扩展 extension)来实现一个Backdoor. 本文就简单介下如何一步步编写一个简单的php 动态扩展后门. 0×01. p

编写一个简单的javaEE加法程序

一 .javaEE的安装及环境配置 工具: 32位系统准备eclipse-jee-mars-2-win32.zip,64位系统准备eclipse-jee-mars-2-win32-x86_64.zip jdk1.7 maven3.3.9.rar m2.rar 环境配置: 1. 设置eclipse的配置文件eclipse.ini,修改虚拟机路径,在-vmargs之前添加 -vm E:\jee\jdk1.7\bin\javaw.exe 注意:用写字板打开修改,-vm有的电脑要换行,有的电脑不用换行

Hutool之正则表达式工具类——ReUtil

前言 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能.就比如说我要匹配一段文本中的某些部分,我们需要这样做: Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); Matcher matcher = pattern.matcher(content); if (matcher.find()) { String result= matcher.group(); } 其

编写一个简单登录验证需要记录日志,Servlet中的Cookie

登录验证并记录日志 之前介绍了如何使用Server.mysql.tomcat等知识点编写了一个简单的登录验证.但是现在有了一个新的需求,我想要在登录成功的时候往数据库记录一条日志,登录失败的时候也要记录一下.这个日志要记录用户名.用户的IP地址.登录的时间.还有成功或失败的状态标识. 所以现在需要增加一个表格,用于存储日志信息,如图: 因为大部分思路和之前的写登录验证差不多,只是多了个记录日志,所以我这里就不赘述实现的思路了,直接上代码. 1. 首先需要使用html编写出页面,代码示例: CSS