我不明白为什么我的代码不起作用,有什么建议吗?
$pattern_c_sap='/\.\-/';
$local='.................';
$local_array = explode( '', $local );
for($i=0; $i<=$local_length; $i++){
if(preg_match($pattern_c_sap , $local_array[$i]) && preg_match($pattern_c_sap , $local_array[$i+1])) {
return false;
}
}
我遇到以下错误: 正则表达式应该是
[/\.\-/]
我应该在拆分每个字母时使用str_split而不是explode。
答案 0 :(得分:17)
您可以使用下面的preg_match
:
if(preg_match('/(.)\1/', $local, $match){
echo "contains consecutive characters";
}
(.)
捕获一个角色。
\1
指的是捕获的角色。
因此,如果您有AA
,则(.)
抓取A
和\1
将表示A
。因此正则表达式将检查AA
。
答案 1 :(得分:5)
if (preg_match('/(.)\1/', $str))
echo "Has 2 same characters consecutively!";
答案 2 :(得分:5)
警告:explode():第5行的此脚本中的空分隔符
$local_array = explode('', $local);
修复将是爆炸构造
的正确分隔符答案 3 :(得分:0)
使用正则表达式量词来连续匹配一个字符。比如/\.{2}/
。这将连续两次匹配.
。或/g{4}/
将匹配四个g
。
答案 4 :(得分:0)
$pattern = "/(\.|\-)/";
$local='.................';
if (preg_match($pattern, $local, $matches)){
$num_of_occurences = count($matches)-1 ;
echo "Number of occurences is {$num_of_occurences}" ;
}