0


3 を超える数が存在するかどうかを確認する必要があるという点で、大きな文字列があります。
「some string2」は無効になりますが、「some string 3」、「some string7」は正しいことを意味します。

4

5 に答える 5

3

正規表現は、算術ではなくテキスト マッチング用です。適切な仕事のための適切なツール...

preg_match('/([0-9]+)/', $string, $matches);
if ($matches[1] >= 3) {
  // Do something
}
于 2012-07-20T07:15:23.703 に答える
3
preg_match('/some\s*string\s*([3-9][0-9]*|[1-9][0-9]+)/i', $haystack);

そして、ここで実際の

ただし、アプリケーションの説明で特定のバージョンをチェックしているように見えるユースケースを調べた後、文字列から数値を取得し、実際の数値と比較して、それが大きいかどうかを確認することもお勧めします。 3 に等しい:

preg_match('/([0-9]+)/', $string, $matches);
if ($matches[1] >= 3) {
  // Do something
}
于 2012-07-20T07:03:18.780 に答える
1

単語に続いてオプションのスペースと 2 より大きい数字を一致させます。小数点以下の桁数を制御できるため、次のように制御できます。

(\w*\s*(?:[1-9]\d+|[3-9]))

ちょっとした例 ( demo ):

$subject = 'I have big string in that I need to check if number is present which is more than 3.
Means "some string2" will be invalid , but "some string 3","some string7" will be correct.';

$pattern = '(\w*\s*(?:[1-9]\d+|[3-9]))';

$r = preg_match_all($pattern, $subject, $matches);

var_dump($matches);

出力:

array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(6) "than 3"
    [1]=>
    string(8) "string 3"
    [2]=>
    string(7) "string7"
  }
}

これがお役に立てば幸いです。

于 2012-07-20T07:16:40.693 に答える
1

Florianのソリューションを変更しました:

[a-z]+\s?[a-z]+\s?([1-9][0-9]+|[3-9])

http://regexr.com?31ja1

「何らかの文字列」だけでなく、任意の文字列に対して機能し、0 または 1 つの空白文字のみを許可します。

于 2012-07-20T07:39:21.237 に答える
1

これはうまくいきませんか?

$numberBiggerThanThree = preg_match('/([0-9]{2,}|[3-9])/', 'some long string 3');
于 2012-07-20T07:03:38.313 に答える