0


我有大字符串,我需要检查是否存在大于 3 的数字。
意味着“某些字符串 2”将无效,但“某些字符串 3”、“某些字符串 7”将是正确的。

4

5 回答 5

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 回答
3

正则表达式用于文本匹配,而不是算术。适合工作的正确工具...

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

这不行吗?

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

您匹配一个单词,后跟一个可选空格,然后是大于 2 的数字。多亏了小数位,您可以控制:

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

一些小例子(演示):

$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

我修改了弗洛里安的解决方案:

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

http://regexr.com?31ja1

它适用于任何字符串,而不仅仅是“某些字符串”,它只允许 0 或 1 个空白字符。

于 2012-07-20T07:39:21.237 回答