Php 用于验证的正则表达式模式,检查所有字符串是否为整数并拆分为单个整数

Php 用于验证的正则表达式模式,检查所有字符串是否为整数并拆分为单个整数,php,regex,pcre,Php,Regex,Pcre,我多次尝试制作一个模式,可以验证给定的字符串是否为自然数,并将其拆分为单个数 …对正则表达式缺乏了解,我能想象的最接近的事情是 ^([1-9])([0-9])*$或^([1-9])([0-9])([0-9])*$诸如此类 它只生成第一个、最后一个和第二个或最后一个分割数 我想知道我需要知道什么来解决这个问题。。谢谢您可以使用两步解决方案,如 if (preg_match('~\A\d+\z~', $s)) { // if a string is all digits print_r(st

我多次尝试制作一个模式,可以验证给定的字符串是否为自然数,并将其拆分为单个数

…对正则表达式缺乏了解,我能想象的最接近的事情是

^([1-9])([0-9])*$
^([1-9])([0-9])([0-9])*$
诸如此类

它只生成第一个、最后一个和第二个或最后一个分割数


我想知道我需要知道什么来解决这个问题。。谢谢

您可以使用两步解决方案,如

if (preg_match('~\A\d+\z~', $s)) { // if a string is all digits
    print_r(str_split($s));         // Split it into chars
}
见a

一步正则表达式解决方案:

(?:\G(?!\A)|\A(?=\d+\z))\d

详细信息

  • (?:\G(?!\A)|\A(?=\d+\z))
    -上一个匹配的结尾(
    \G(?!\A)
    )或(
    |
    )字符串(
    ^
    )的开头,该字符串后面有一个或多个数字(
    (?=\d+\z)
  • \d
    -一个数字
:

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 0
)

谢谢你,威克托。我将把
(?:\G(?!\A)|\A(?=\d+\z))\d
放入regex101站点并检查它。如果您需要更多详细信息,请告诉我。答案中已经有了。@WiktorStribiżew更具体地针对OP的要求(无前导零)@mickmackusa对。无论如何,该解决方案展示了一种验证和提取特定模式的方法。
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 0
)