php 正则 英文开头,php 正则表达式 匹配以“XXX”开头不能以“YYY”结尾

本文章来给大家介绍php 正则表达式 匹配以“XXX”开头不能以“YYY”结尾,下面的实例我们以abc开头与

首先来是abc开头, 没有想的就是 ^abc 以abc开头了,不能以“xyz”结尾

后面要有一串的字符串

一般我用[^…………]这样来否定,当然也别的写法

既然是否定“x”、“y”、“z”

就是[^xyz]

整个写来就是

^abc[^xyz]*$

PHP测试:

代码如下

复制代码

$str = 'abcdef124f';

$search = '/^abc[^xyz]*$/';

if(preg_match($search,$str)) {

echo $str.' 符合
';

}else {

echo $str.' 不符合
';

}

//output abcdef124f 符合

$str = 'abcdef12x124';

if(preg_match($search,$str)) {

echo $str.' 符合
';

}else {

echo $str.' 不符合
';

}

//output abcdef12x124 不符合

?>

本文章来给大家详细介绍php正则匹配href中url地址详解,有需要了解的朋友可进入参考。

正则匹配href中url

代码如下

复制代码

hrefs*=s*(?:"(?<1>[^"]*)"|(?<1>\S+))

取href的链接的

href是正常的href字符

s表示一个空格,*表示1个或者多个匹配,当前的意思是一个或者多个空格

=是正常的字符

?<1>在这里应该是命名捕获组,我不知道你这个正则是哪个流派的,但应该不是js和c#的,呵

\S+,\前面一个表示转义,这个的意思是后面带一个S,而S可以是多个,同样,"也是转义,因为"和都是正则的元字符

[^"],在方括号中的^,如果我没记错的话,应该是不包含的意思吧,就是不不含"

差不多了吧,不一定全部正确,你应该去了解一下正则的元正符再来看

*是指0或者多个 href= 和 href =都匹配

(?exp)   匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)

(?:exp)  匹配exp,不捕获匹配的文本,也不给此分组分配组号

"(?<1>[^"]*)" 匹配的 "任意字符串" 只要引号内不含^"就可以

还有一个作用就是把匹配的引号内的字串放在group 1里

(?<1>\S+)这里可能是(?<1>S+)

匹配任意非空字串,并放入 group 1里

因此整个表达式应该是匹配一个

href属性,并把属性值放入 group 1中

这样可以在匹配后直接使用该属性值

url地址栏传参数中文乱码解决方法

php地址栏传中文$_GET下来后乱码,urlencode和urldecode用法详解

url编码

语法: string urlencode(string str);

返回值: 字符串

函数种类: 编码处理

代码如下

复制代码

$ChineseName="我的名字,是中文的哦";

$EncodeStr=urlencode($ChineseName);

echo "我的名字";

?>

url解码

还原 URL 编码字符串。

语法: string urldecode(string str);

返回值: 字符串

函数种类: 编码处理

例如:

对前面传过来的中文进行处理显示

:

代码如下

复制代码

$DecodeStr=urldecode($_GET['name']);//你可能不用解码都可以,因为浏览器会自动帮你解码

echo $DecodeStr;

?>

本文章给大家介绍一个PHP正则匹配指定长度字符必须有数字、字母、下划线组成,现在我们先来看一个简单正则,规则是:6到16位,这样就可以了{6,16}

任意的字符6到16位是.{6,16}

只有 数字、字母、下划线组成 就是[0-9_a-zA-Z]

总的加在一起就椒 ^[_0-9a-z]{6,16}$

代码如下

复制代码

function ispassword($str) {

if (preg_match('/^[_0-9a-z]{6,16}$/i',$str)){

return true;

}else {

return false;

}

}

$password = 'abcde@';

if(ispassword($password)) {

echo '符合';

}else {

echo '不符合';

}

//output  不符合

echo '
';

$password = 'abcdeasdas_1324';

if(ispassword($password)) {

echo '符合';

}else {

echo '不符合';

}

//output  符合

?>

例2

代码如下

复制代码

$action = trim($_get['action']);

if($action == "sub")

{

$str = $_post['dir'];

//if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."a-za-z0-9_]+$/",$str)) //gb2312汉字字母数字下划线正则表达式

if(!preg_match("/^[x{4e00}-x{9fa5}a-za-z0-9_]+$/u",$str))   //utf-8汉字字母数字下划线正则表达式

{

echo "您输入的[".$str."]含有违法字符";

}

else

{

echo "您输入的[".$str."]完全合法,通过!";

}

}

?>

输入字符(数字,字母,汉字,下划线):

有时我们注册时希望用户可以是中文也可以是英文注册,这里我们的要用户名如何正则验证呢,下面我来给大家介绍一个用户名正则表达式、含中文、长度为4-16个字符实例。

[a-zA-Zxa0-xff_]小写大写英文,或者中文,或者下划线开头

[0-9a-zA-Zxa0-xff_]后面的内容可以是小写大写中文数字下划线

[0-9a-zA-Zxa0-xff_]{3,15}后面的内容重复3-15次

所以整个正则表达式为[a-zA-Zxa0-xff_][0-9a-zA-Zxa0-xff_]{3,15}

也可以加上开头结尾锚记^[a-zA-Zxa0-xff_][0-9a-zA-Zxa0-xff_]{3,15}$

代码如下

复制代码

function isusername($str) {

if (preg_match('/^[a-zA-Zxa0-xff_][0-9a-zA-Zxa0-xff_]{3,15}$/',$str)){

return true;

}else {

return false;

}

}

$username = 'abcde123';

if(isusername($username)) {

echo '符合';

}else {

echo '不符合';

}

//output  符合

echo '
';

$username = '1abcdeasdas_1324';

if(isusername($username)) {

echo '符合';

}else {

echo '不符合';

}

//output  不符合

?>

如果你是普通的用户我我们就不需要上面的实例了,由字母a~z(不区分大小写)、数字0~9、减号或下划线组成

只能以数字或字母开头和结尾 用户名长度为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}

我想正则匹配邮箱地址这个应用我们做web开的几乎都使用到吧,下面我来给大家介绍在邮箱地址正则匹配时的一些问题分析,有需要更深入理解邮箱地址正则的朋友可进入参考。

有个php正则表达式邮箱问题

代码如下

复制代码

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

[email protected]';

if(preg_match($a,$b)){

echo "电子邮件合法";

}else{

echo "电子邮件不合法啊";

}

为何上面的输出为合法???{2,10}这里不是只能放2到10位数字吗 这里已经超出了10位了

这个正则是能匹配的,匹配到这样这部分 [email protected]'

前面部分的1412424545645454不匹配,所以还是合法的。

你想要匹配一整段正确可以改成这样

代码如下

复制代码

$a='/^([w._]{2,10})@(w{1,}).([a-z]{2,4})$/';

要注意你的正则

代码如下

复制代码

/([w._]{2,10})@(w{1,}).([a-z]{2,4})/

他没有断言,意味着只要字符串中有符合的部分就匹配

因此{2,10}是只能2到10位匹配,但不针对整个字符串只要有一部分符合就匹配了。

你要判断一整段字符串是否都匹配就要用断言。如^ $

代码如下

复制代码

/^([w._]{2,10})@(w{1,}).([a-z]{2,4})$/

注意头和尾加上了^ $

代码如下

复制代码

$a='/^([w._]{2,10})@(w{1,}).([a-z]{2,4})$/';

[email protected]';

if(preg_match($a,$b)){

echo "电子邮件合法";

}else{

echo "电子邮件不合法啊";

}

好了下面我来进行更完善写法

PHP 邮箱验证正则表达式 新手实例:

代码如下

复制代码

function isEmail($email){

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

return ‘是邮箱’;

}      else{

return ‘不是邮箱’;

}

}

?>

Javascript(js) 邮箱验证正则表达式:

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

这个可以验证 形如:[email protected] ,[email protected] 这种邮箱

Javascript(js) 邮箱验证正则表达式 新手实例:

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(‘[email protected]’) );

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值