首先明确一点,连续递增数字或字母就是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');
?> |
|