php中preg_match用户名正则实例

 更新时间:2016年11月25日 17:42  点击:1478
一般情况下用户名我们只能使用数字字母之类的但有时可能可以有中文,数字之类的,下面本文章总结了一些利用正则来验证用户名的例子。

例子,字母、数字和汉字

 代码如下 复制代码

if(preg_match("/[ '.,:;*?~`!@#$%^&+=)(<>{}]|]|[|/|\|"||/",$user)){
echo '不要在名字里面整些特殊符号,请只使用字母、数字和汉字,当然要你的浏览器要选简体中文GB2312哟,千万不要选繁体、中文HZ等。返回修改后,再来,我等你哟!';
exit();
}

例子,全字母

 代码如下 复制代码

<?php 

if (mb_ereg("^[w-.]{1,32}$", $str)) { 
echo 'yes'; 
} else { 
echo 'no'; 

?>

附一些常用正则

只能以数字或字母开头和结尾 用户名长度为4~18个字符

 代码如下 复制代码
^[a-za-z0-9]{1}[a-za-z0-9|-|_]{2-16}[a-za-z0-9]{1}$

用户名为大写字母小写字母或下划线,并以字母开头,长度为6-20

 代码如下 复制代码
^[a-za-z][wd_]{5,19}

用户名:包括英文小写、汉字、数字、下划线,不能全部是数字,下划线不能在末尾

 代码如下 复制代码
/^[a-z0-9_u4e00-u9fa5]+[^_]$/g
utf-8下
preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a);
gbk下:
preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a)

可有中文的用户名验证

 代码如下 复制代码
[a-za-z0-9][u4e00-u9fa5]
我做了一个英文站但是经常有人发中文的评论了,希望这些垃圾评论全部替换成字了,下面我整理了两个php正则替换中文的例子,我们一起来看看。

采用php的正则删除中文

 代码如下 复制代码

/*转换为UTF8 再处理*/

$a = mb_convert_encoding($a, 'UTF-8', 'GB2312');
$a = preg_replace("/[x{4e00}-x{9fff}]/u", "", $a);
 
/*再转回来*

$a = mb_convert_encoding($a, 'GB2312', 'UTF-8');

例子

 代码如下 复制代码


$chstr="<a>中文区间afeowahgieawhjo中文区间fawgwea中文区间aghoiawghowi中文区间</a>";
$match="/[中文区间|中文区间|我靠|中文区间]/";
$chstr=preg_replace($match,"",$chstr);
echo $chstr;


简单说明下

x{4e00}-x{9fff} 这个是中文区间(各种文字都有unicode码区间)

/u 表示采用unicode码 进行正则判断

[] 正则标准括号,表示范围[0-3]表示 0,1,2,3, 0到3的意思

我整理了几个比较适合的实例了,对于它们我们是有很多站长都测试过并用过了,不过文章最后我的总结也是生重要的哦,至于原因我也说不上了,因为chr是ascii编码了所以有时浏览器会自动转成ascii,特别像ff浏览器就是这样的。

一,下例可以去除额外空白

 代码如下 复制代码

<?php
$str = " This line  containstliberal rn use of   whitespace.nn";
// First remove the leading/trailing whitespace
//去掉开始和结束的空白  www.111cn.net
$str = trim($str);
// Now remove any doubled-up whitespace
//去掉跟随别的挤在一块的空白
$str = preg_replace('/s(?=s)/', '', $str);
// Finally, replace any non-space whitespace, with a space
//最后,去掉非space 的空白,用一个空格代替
$str = preg_replace('/[nrt]/', ' ', $str);
// Echo out: 'This line contains liberal use of whitespace.'
echo "<pre>{$str}</pre>";
?>

二,替换换行符
//php 有三种方法来解决

 代码如下 复制代码

//1、使用str_replace 来替换换行
$str = str_replace(array("rn", "r", "n"), "", $str);

//2、使用正则替换
$str = preg_replace('//s*/', '', $str);

//3、使用php定义好的变量 (建议使用)
$str = str_replace(PHP_EOL, '', $str);


代码如下:

 代码如下 复制代码
 
/*
* 获得用户操作系统的换行符,n
* @access public
* @return string
*/
function get_crlf()
{
if (stristr($_SERVER['HTTP_USER_AGENT'], 'Win'))
{
$the_crlf = 'rn';
}
elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Mac'))
{
$the_crlf = 'r'; // for old MAC OS
}
else
{
$the_crlf = 'n';//权重大一点 www.111cn.net
}
return $the_crlf;
}

注意:在前台页面显示的时候,用nl2br使换行变成<br>

三,替换回车

 代码如下 复制代码

    <?php  
     //php 不同系统的换行 
    //不同系统之间换行的实现是不一样的 
    //linux 与unix中用 /n 
    //MAC 用 /r 
    //window 为了体现与linux不同 则是 /r/n 
    //所以在不同平台上 实现方法就不一样 
    //php 有三种方法来解决 
         
    //1、使用str_replace 来替换换行 
    $str = str_replace(array("/r/n", "/r", "/n"), "", $str);  
         
    //2、使用正则替换 
    $str = preg_replace('//s*/', '', $str); 
         
    //3、使用php定义好的变量 (建议使用) 
    $str = str_replace(PHP_EOL, '', $str);  
    ?> 

一聚教程小编提醒你,有时我们还需要注意像textarea中的回车换行并不是/r/n之类的而是需要chr(32),chr(13)这样才可以替换的哦。

个人觉得邮箱正则表达式在javascript与php中一样的规则了,只是语法稍有不同,下面我就把在服务器与客户端邮箱验证代码给大家看看。

邮箱地址验证有很多方法。在浏览器端,js邮箱验证可以通过正则表达式检测。

 代码如下 复制代码

function isEmail(email) {
    return /^((([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+(.([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+)*)|((x22)((((x20|x09)*(x0dx0a))?(x20|x09)+)?(([x01-x08x0bx0cx0e-x1fx7f]|x21|[x23-x5b]|[x5d-x7e]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(\([x01-x09x0bx0cx0d-x7f]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))))*(((x20|x09)*(x0dx0a))?(x20|x09)+)?(x22)))@((([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).)+(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])))$/i.test(email);
}

function validateEmail(elementValue)
{   
var emailPattern = /^[a-zA-Z0-9._]+[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]{2,4}$/;   
return emailPattern.test(elementValue);
}

function checkEmail(mail) {   
return /^[w-]+(.[w-]+)*@([a-z0-9-]+(.[a-z0-9-]+)*?.[a-z]{2,6}|(d{1,3}.){3}d{1,3})(:d{4})?$/.test(mail);
}

调用很简单:

 代码如下 复制代码

 
if (isEmail('youremail@yourdomain.com')){ console.log(' www.111cn.net This is email is valid'); }View Code 


如果是进行服务器端验证。像php,则最简单的莫过于:
 

 代码如下 复制代码

$a='/([w._]{2,10})@(w{1,}).([a-z]{2,4})/';
$b='1412424545645454545454545k@qq.com';

if(preg_match($a,$b)){
 echo "电子邮件合法";
}else{
 echo "电子邮件不合法啊";
}


你要判断一整段字符串是否都匹配就要用断言。如^ $
/^([w._]{2,10})@(w{1,}).([a-z]{2,4})$/
注意头和尾加上了^ $

我们要获取字符串中图片地址需要使用preg_match_all正则表达式来获取,替换获取到的内容使用str_replace函数即可了,下面我们看个实例。

 代码如下 复制代码

function repalceTA($str){
    preg_match_all("/<img(.*)(src="[^"]+")[^>]+>/isU", $str, $arr);
    for($i=0,$j=count($arr[0]); $i<$j; $i++){
        $str = str_replace($arr[0][$i],"<img " .$arr[2][$i]." />",$str);
    }
    return $str;
}

php中preg_match_all函数

preg_match_all — 执行一个全局正则表达式匹配

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.

在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.


php中str_replace函数

定义和用法

str_replace() 函数使用一个字符串替换字符串中的另一些字符。

语法

str_replace(find,replace,string,count)

[!--infotagslink--]

相关文章

  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • php有效防止同一用户多次登录

    【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
  • js检测用户输入密码强度

    一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23
  • php ajax注册验证用户名是否存在代码

    这是注册程序是一款当用户输入完用户名是,就会自动去数据库中查询用户要注册的用户名是否己经被注册了,如果是返回提示否则提示可以注册。 conn.php文件 代...2016-11-25
  • 微信小程序用户授权最佳实践指南

    这篇文章主要给大家介绍了关于微信小程序用户授权最佳实践的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-08
  • js正则学习小记之匹配字符串字面量

    关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
  • js 正则学习小记之匹配字符串字面量优化篇

    昨天在《js 正则学习小记之匹配字符串字面量》谈到 /"(?:\\.|[^"])*"/ 是个不错的表达式,因为可以满足我们的要求,所以这个表达式可用,但不一定是最好的...2021-05-07
  • 简单php cookie用户登录实例

    cookie 的用途之一是存储用户在特定网站上的密码和 id。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量...2016-11-25
  • C#使用正则表达式过滤html标签

    最近在开发一个项目,其中有需求要求我们把一段html转换为一般文本返回,使用正则表达式是明智的选择,下面小编给介绍下C#使用正则表达式过滤html标签,需要的朋友参考下...2020-06-25
  • OpenResty中正则模式匹配的2种方法详解

    在 OpenResty 中,同时存在两套正则表达式规范:Lua 语言的规范和 Nginx 的规范,下面这篇文章主要给大家介绍了关于OpenResty中正则模式匹配的2种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。...2020-06-30
  • 浅谈JS正则RegExp对象

    这篇文章主要介绍JS正则RegExp对象,正则表达式是描述字符模式的对象,用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。下面就来看具体详情,需要的朋友可以参考一下...2021-10-21
  • JS基于正则截取替换特定字符之间字符串操作示例

    这篇文章主要介绍了JS基于正则截取替换特定字符之间字符串操作方法,结合具体实例形式分析了JS基于正则实现针对特殊字符、数字等字符串类型的截取操作相关技巧,需要的朋友可以参考下...2017-02-08
  • MySQL验证用户权限的方法

    知识归纳因为MySQL是使用User和Host两个字段来确定用户身份的,这样就带来一个问题,就是一个客户端到底属于哪个host。 如果一个客户端同时匹配几个Host,对用户的确定将按照下面的优先级来排 基本观点越精确的匹配越优先...2015-11-08
  • sqlserver添加sa用户和密码的实现

    这篇文章主要介绍了sqlserver添加sa用户和密码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-07
  • 超详细的php用户注册页面填写信息完整实例(附源码)

    注册页面是大多数网站必备的页面,所以很有必要对自己的注册页面做些精心的设计。下面三张图,第一张是注册的展示页面,第二张思维导图就一个简单的逻辑,第三张是通过firebug查看调用的JS文件。 一、给每个输入框写下说明在...2015-11-24
  • mysql误删root用户恢复方法

    装完数据库清理一些默认账号的时候不小心把root删除了,flush privileges 之后的新 root 忘了grant任何权限,查看mysqld选项里面有个 &#8722;&#8722;skip-grant-tables复制代码 代码如下: #/usr/libexec/mysqld --verbos...2015-03-15
  • Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法

    这篇文章主要介绍了Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法,需要的朋友可以参考下...2016-11-01