匹配整数或整数+

时间:2018-08-15 12:25:33

标签: php regex

我有一个选择框:

<select name="count">
    <option value="0">Select count</option>
    <option value="1">1</option>
    <option value="2">2</option>
    ..
    <option value="5">5</option>
    <option value="5+">5+</option>
</select>

所以我想检查该值是整数还是5+

我尝试过:

$pattern = '/^[0-9]*?[0-9+]$/';
$count = '1';

if(preg_match($pattern, $count)){
    echo 'Valid';
}else{
    echo 'Invalid';
}

返回Valid

$count = '10+';

这还会返回Valid

但不确定是否工作正常。

是检查整数还是整数+?

我只想检查整数或5 +。

3 个答案:

答案 0 :(得分:1)

您可以使用a来允许^\d+(\+?)$在任何数字后。

+

如果您只想专门允许$pattern = '/^\d+(\+?)$/'; preg_match($pattern, '1'); // Match preg_match($pattern, '5+'); // Match preg_match($pattern, '10+'); // Match ,那么5+应该可以完成工作。

^(\d+|5\+)$

您可以看到以上两种方法in a sandbox

答案 1 :(得分:1)

您可以使用

'~^(?:\d+|5\+)$~D'

请参见regex demo

详细信息

  • ^-字符串的开头
  • (?:-与两个模式之一匹配的non-capturing group
    • \d+-一个或多个数字
    • |-或
    • 5\+-5+子字符串
  • )-组结束
  • $-字符串的末尾(因为PCRE_DOLLAR_ENDONLY D修饰符不允许$匹配字符串中最后一个换行符之前的字符)。

答案 2 :(得分:0)

您需要使用

$pattern = '/^\d+\+?$/';