【正则表达式】PHP常用的正则表达式函数


其实用了那么久,一想到使用正则,都是使用原生的字符串去使用正则。不知道原来PHP内部有那么多已经写好常用的正则函数,也真是惭愧,看来以后不能光闭门造车,还得多练习多看看外面的文章。


  1. 正则表达式列表

正则表达式函数之preg_match与preg_match_all
正则表达式函数之preg_replace与preg_filter 
正则表达式函数之preg_grep 
正则表达式函数之preg_split
正则表达式函数之preg_quote


Delevin、博客


2.正则表达式基础语法

    I.界定符,不算表达语法,应该只能算是标定正则表达式的开始与结束,并且可以用其他符号替换

    Delevin、博客

    II.原子,有可见和不可见

    Delevin、博客Delevin、博客

    III.元字符

    Delevin、博客

Delevin、博客


    IIII.量词

    Delevin、博客

    IIIII.边界控制 

Delevin、博客


3.贪婪匹配和懒惰匹配

Delevin、博客Delevin、博客



4.实战 - 写一个正则类demo

<?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}$/',
			);
	private $returnMatchResult = false;
	private $fixMode = null;
	private $matches = array();
	private $isMatch = false;
	
	public function __construct($returnMatchResult = false, $fixMode = null) {
		$this->returnMatchResult = $returnMatchResult;
		$this->fixMode = $fixMode;
	}
	
	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();
	}
	
	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);
	}
	
	public function isEmail($email) {
		return $this->regex('email', $email);
	}
	
	public function isMobile($mobile) {
		return $this->regex('mobile', $mobile);
	}
	
	public function check($pattern, $subject) {
		return $this->regex($pattern, $subject);
	}
	
	//......
	
}



最后推荐一个正则表达式工具 ,优点是可以实时调试正则匹配的效果: regexpal