0

569048004801のような数字の文字列から4800のような特定の数字を除外したいと思います。これにはphpを使用し、メソッドpreg_match_allはいくつかのパターンの例を試しました。

/([^4])([^8])([^0])([^0])/i
/([^4800])/i
4

3 に答える 3

3

文字列に4800が含まれているかどうかを確認したいだけの場合は、正規表現は必要ありません。

<?php

$string = '569048004801';

if(strpos($string,'4800') === false){
  echo '4800 was not found in the string';
}
else{
  echo '4800 was found in the string'; 
}

strposの詳細については、こちらのドキュメントをご覧ください

于 2012-08-23T15:56:03.020 に答える
2

4800文字列から削除したいだけの場合は、 str_replace:を使用すると簡単です。

$str = '569048004801';
$str = str_replace('4800', '', $str);

一方、特定の数字の文字列にが含まれているかどうかを知りたい場合は、次の4800ようにテストします。

$str = '569048004801';

if (preg_match_all('/4800/', $str) > 0) {
    echo 'String contains 4800.';
} else {
    echo 'String does not contain 4800.';
}
于 2012-08-23T15:50:02.373 に答える
1
/([^4])([^8])([^0])([^0])/i

これは実際には、「4800」ではない4文字のシーケンスを示しています。選ぶ。

/([^4800])/i

これは実際には、「4」、「8」、または「0」ではない単一の文字を示しています。

「4800」を含まない番号をキャプチャすることを意味していると仮定すると、私はあなたが望むかもしれないと思います

/(?!\d*4800)\d+/i

つまり、最初に「4800」の数字の文字列がどこかに表示されていないことを確認します。その場合は、数字の文字列をキャプチャします。これは「ネガティブ先読みアサーション」と呼ばれます。

于 2012-08-23T15:53:15.040 に答える