找回密码
 注册

[PHP] 正则匹配连续递增数字或字母

php 发表于 2012/11/16 10:28 | 显示全部楼层 |阅读模式
首先明确一点,连续递增数字或字母就是abcdefg,1234567这种字符串组合.
正则匹配连续递增的数字或顺序递增的字母组合,听起来很容易,其实...也很容易.
但是完全用正则却是不行的.
我们的思路,是把字符串里面的每一个字符提取出来,然后比较后面的字符字的ascii码值是否大于前一个.
下面让我们来看完整代码.
<?php
/***
**PHP+正则判断字符串是否是连续递增的数字或字母组合.
***/
function check($str){
        if(gettype($str)!=='string') exit('参数不是字符串');
        if(preg_match('/[^a-zA-Z\d]/',$str)) exit('字符串只能为数字,字母或其组合');
        $n=preg_match_all('/./',$str,$a);
        if($n>1){
                $a=$a[0];
                foreach($a as $i=>$v){
                        if($i>0){
                                        if((is_numeric($a[$i]) !== is_numeric($a[$i-1])) || ord($a[$i]) < ord($a[$i-1])){
                                                exit('字符串字符不是连续递增字符组成的');
                                        }
                                }
                        }
        }else{
                exit('字符串字符数必须大于1');
        }
        echo '字符串符合要求';
}
check('d3');
?>

手机版|轻松E站

轻松E站

快速回复 返回顶部 返回列表