PHP用户注册邮箱验证正则表达式方法

 更新时间:2016年11月25日 17:41  点击:2458
邮箱验证使用正则是非常的简单了,我们这里整理了两种PHP用户注册邮箱验证正则表达式方法例子,希望此文章能够让各位有帮助.
这里可以使用到2种方法,一种是用preg_match进行验证,一种是用JS判断。

 

第一、PHP方法

 

 代码如下 复制代码

preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email );

 

使用方法:

 

 代码如下 复制代码

<?php
function isEmail($email){
if(preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email )){
return '是邮箱';
     else{
return '不是邮箱';
}
}
?>

 

或者直接用IF判断:

 

 代码如下 复制代码

if(!preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email )){
exit('错误:电子邮箱格式错误。<a href="javascript:history.back(-1);">返回</a>');
}

 

第二、JS判断方法

 

myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;

 

使用方法:

 

 代码如下 复制代码

<script type="text/javascript">

function isEmail(val){

var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,4}$/;

if(!myreg.test(val))

return '不是邮箱';

return '是邮箱';

};

alert( isEmail('i@julying.com') );

</script>

 

以上PHP和JS两种方法,根据我们实际的需要和项目使用,老蒋这里用了第一种方法。
正则表达式我就不说是什么意思了在php中正则表达式函数是有许多了有些已经不能用了有些非常的实用,有此只能匹配一个,有的可以匹配所有的,具体的我们来看看这些函数吧。

今天深入的把正则表达式看了一下,总结一下php的正则表达式所使用的函数

preg_match();
preg_match_all();
preg_replace();
preg_filter();
preg_grep();
preg_split();
preg_quote();

基本有这么多吧。

一个个来

先给大家介绍一个 在线 验证 正则表达式的工具

http://regexpal.isbadguy.com/

打开你就明白怎吗用了,我们先来说

preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。

这个很简单直接来个例子就明白了

$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
preg_match_all() 函数用于进行正则表达式全局匹配,成功返回整个模式匹配的次数(可能为零),如果出错返回 FALSE 。

preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_PATTERN_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "\n";
echo $out[1][0] . ", " . $out[1][1] . "\n";

我们来重点讲讲

preg_replace();

preg_filter();

这两个函数的区别

$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$pattern = array('/d/', '/[a-z]/', '/[1a]/');
$replace = array('A:$0', 'B:$0', 'C:$0');
echo "preg_filter returns ";
print_r(preg_filter($pattern, $replace, $subject));
echo "preg_replace returns ";
print_r(preg_replace($pattern, $replace, $subject));

很明显我们可以看一下结果

preg_filter returns Array
(
    [0] => C:1
    [1] => B:C:a
    [3] => B:b
)
preg_replace returns Array
(
    [0] => C:1
    [1] => B:C:a
    [2] => 2
    [3] => B:b
    [4] => 3
    [5] => A
    [6] => B
    [7] => 4
)
这样就很明显了,preg_filter不会保留不匹配的选项,而preg_replace会保留不匹配的选项

preg_grep — 返回匹配模式的数组条目

$array = array("23.32","22","12.009","23.43.43");
print_r(preg_grep("/^(\d+)?\.\d+\.\d+$/",$array));

preg_split — 通过一个正则表达式分隔字符串

这个函数要提得一点是,explode()可以算是这个函数的一个子集

preg_quote — 转义正则表达式字符

最后这个函数就没什么好讲的了。就是不让执行正则表达式,转义一下字符,和自己手动加\转移是一样的

正则匹配可能通过一些通配符来获得有规则的数据了,我们下文来为各位介绍一个php正则匹配字符串中js文件例子,具体的例子如下图所示。

将一个网页里面所有引入的js文件都匹配出来,在php中用正则表达式来实现,方式如下:

<?php
 header("Content-type:text/html;charset=utf-8");
 //匹配一个网页中引入的js文件
 $pageContent = file_get_contents('http://www.daixiaorui.com/cat_2.html');
 preg_match_all('/<script.*?src\s*=\s*[\"|\'](.*?)[\"|\'].*?>\s*?<\/script>/i', $pageContent, $js);
 print_r($js);

php正则匹配页面引入的js


其中“src\s*=\s*”表示可以是“src=”也可以是“src = ”这样的;“[\"|\']”表示路径可以是单引号,也可以为双引号;“.*?”尽可能的少重复,匹配最近的位置。

加密解密是通过两个对应的函数来进行操作了我们对些数字需要加密传输时就会用到了,下面我们来看一对php加密解密算法,希望对各位有用。

加密:

function string_secret($string)
{
    $key = "yadgen";
 
    //密锁串,不能出现重复字符,内有A-Z,a-z,0-9,/,=,+,_,
    $lockstream = 'st=lDEFABCNOPyzghi_jQRST-UwxkVWXYZabcdef+IJK6/7nopqr89LMmGH012345uv';
    //随机找一个数字,并从密锁串中找到一个密锁值
    $lockLen = strlen($lockstream);
    $lockCount = rand(0,$lockLen-1);
    $randomLock = $lockstream[$lockCount];
    //结合随机密锁值生成MD5后的密码
    $password = md5($key.$randomLock);
    //开始对字符串加密
    $txtStream = base64_encode($string);
    $tmpStream = '';
    $i=0;$j=0;$k = 0;
    for ($i=0; $i<strlen($txtStream); $i++) {
        $k = ($k == strlen($password)) ? 0 : $k;
        $j = (strpos($lockstream,$txtStream[$i])+$lockCount+ord($password[$k]))%($lockLen);
        $tmpStream .= $lockstream[$j];
        $k++;
    }
    return $tmpStream.$randomLock;
}

解密:


function secret_string($string)
{
    $key = "yadgen";
 
    //密锁串,不能出现重复字符,内有A-Z,a-z,0-9,/,=,+,_,
    $lockstream = 'st=lDEFABCNOPyzghi_jQRST-UwxkVWXYZabcdef+IJK6/7nopqr89LMmGH012345uv';
 
    $lockLen = strlen($lockstream);
    //获得字符串长度
    $txtLen = strlen($string);
    //截取随机密锁值
    $randomLock = $string[$txtLen - 1];
    //获得随机密码值的位置
    $lockCount = strpos($lockstream,$randomLock);
    //结合随机密锁值生成MD5后的密码
    $password = md5($key.$randomLock);
    //开始对字符串解密
    $txtStream = substr($string,0,$txtLen-1);
    $tmpStream = '';
    $i=0;$j=0;$k = 0;
    for($i=0; $i<strlen($txtStream); $i++){
    $k = ($k == strlen($password)) ? 0 : $k;
    $j = strpos($lockstream,$txtStream[$i]) - $lockCount - ord($password[$k]);
    while($j < 0){
    $j = $j + ($lockLen);
    }
    $tmpStream .= $lockstream[$j];
    $k++;
    }
    return base64_decode($tmpStream);
}

正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。


收藏了正则表达式。可以验证只能输入数字、汉字、英语。分开验证了也可以整合一起验证。但是我是拆分开好了。比较好使。可以单独的验证。经过本人测试可以使用的哦!下面就是php 验证只能输入汉字、英语、数字的代码了
 
<?php

 if(preg_match('/^[0-9]+$/',$str)){
     echo '值能输入数字';
 }

 if(preg_match('/^[a-zA-Z]+$/',$str)){
     echo '只能输入英文';
 }

验证中文

utf-8下

preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a);

if(preg_match("/^[\x7f-\xff]+$/",$str)){
     echo '只能输入中文';
 }

gbk下:

preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a)

 ?>

例子

<?
function checkStr($str){
$output='';
$a=ereg('['.chr(0xa1).'-'.chr(0xff).']', $str);
$b=ereg('[0-9]', $str);
$c=ereg('[a-zA-Z]', $str);
if($a && $b && $c){ $output='汉字数字英文的混合字符串';}
elseif($a && $b && !$c){ $output='汉字数字的混合字符串';}
elseif($a && !$b && $c){ $output='汉字英文的混合字符串';}
elseif(!$a && $b && $c){ $output='数字英文的混合字符串';}
elseif($a && !$b && !$c){ $output='纯汉字';}
elseif(!$a && $b && !$c){ $output='纯数字';}
elseif(!$a && !$b && $c){ $output='纯英文';}
return $output;
}

例子

PHP正则匹配数字,中英文,中横线,下划线,utf-8中文

function check_string($nickname) {
    $nickname = trim($nickname);
   
    $pattern = "#([0-9a-zA-Z-_x{4e00}-x{9fa5}]+)#iu";
    if (empty($nickname) || !preg_match($pattern, $nickname)) {
        return FALSE;
    }
   
    if (strlen($nickname) < 4 || strlen($nickname) > 30) {
        return FALSE;
    }
   
    return TRUE;
}

[!--infotagslink--]

相关文章

  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • PHP正则表达式匹配验证提取网址URL实例总结

    网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
  • 正则表达式中两个反斜杠的匹配规则详解

    这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • JS中使用正则表达式g模式和非g模式的区别

    这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
  • C#正则表达式使用方法示例

    这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
  • 常用C#正则表达式汇总介绍

    c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
  • JavaScript利用正则表达式替换字符串中的内容

    本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
  • 一文秒懂python正则表达式常用函数

    这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • Idea使用正则表达式批量替换字符串的方法

    这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • C# 中使用正则表达式匹配字符的含义

    正则表达式的作用用来描述字符串的特征。本文重点给大家介绍C# 中使用正则表达式匹配字符的含义,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧...2020-06-25
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
  • C#编程自学之运算符和表达式

    这篇文章主要介绍了C#运算符和表达式,这是自学C#编程的第五篇,希望对大家的学习有所帮助。...2020-06-25
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • js用正则表达式筛选年月日的实例方法

    在本篇文章里小编给大家整理的是一篇关于js用正则表达式筛选年月日的实例方法,对此有兴趣的朋友们可以学习下。...2021-01-04
  • javascript 手机号码正则表达式验证函数 <font color=red>原创</font>

    随着手机号码段的不断增加,以前网上的手机号码验证函数都不能那么完美的支持了,这里脚本之家编辑特为大家准备的一个简单的正则与手机验证的函数分析。...2021-05-07