我希望匹配不匹配给定模式的字符串中的所有内容;例如[a-z]
。
给定字符串abc4jkf8 4à3in
,我需要匹配48 4à3
。
我尝试过使用([a-z])+(?![a-z])
,但这恰好与我需要的相反。使用上面的字符串,此正则表达式匹配abcjkfin
。
有什么想法吗?
答案 0 :(得分:7)
您使用否定集:
([^a-z]+)
答案 1 :(得分:2)
preg_match_all('/([^a-z]+)/si', $code, $result, PREG_PATTERN_ORDER);
$unmached = "";
for ($i = 0; $i < count($result[0]); $i++) {
$unmached .= $result[0][$i];
}
echo $unmached;
[^a-z]
匹配不是a-z的每个字符。
答案 2 :(得分:2)
为什么不使用preg_replace。
$string = "abc4jkf8 4à3in";
echo preg_replace("/[a-z]/", "", $string);
这给出了期望的结果
答案 3 :(得分:1)
你需要匹配任何没有alpha的角色。 ^告诉不匹配alpha字符
[^a-z]*
答案 4 :(得分:1)
$a = "abc4jkf8 4à3in";
function stringConcat($a, $b) { return $a.$b; }
if (preg_match_all("/[^a-z]/", $a, $matches)) {
echo array_reduce(reset($matches), 'stringConcat');
}
给出你想要的东西。