【发布时间】:2021-03-07 18:16:20
【问题描述】:
我有一个具有特定格式的字符串,我想检查它。要检查这种格式是否正确,我想使用正则表达式。但是字符串格式“12345x”可以是无穷无尽的。示例“12345t12345x”。
如果格式只使用一次,我的正则表达式模式是:
function useRegex($input) {
$regex = '/^[0-9]+[a-zA-z]+$/i';
return preg_match($regex, $input);
}
echo useRegex("12045t");
如果字符串是“12345t12345u”,我的代码无法检查它。所以我的问题是我是否可以通过字符串循环我的正则表达式模式?
【问题讨论】:
-
只需使用
preg_match_all('~\d+[A-Z]+~i', $input, $matches)提取所有这些匹配项。如果要验证字符串,请使用preg_match('~^(?:\d+[A-Z]+)+$~iD', $input)。如果你需要提取和验证,它会有点复杂,但可能。 -
这不适用于我的字符串格式。格式是每次 0-9 的 5 个随机数,然后是一个随机字符,这种格式可以是循环或堆栈无穷大。我想用正则表达式检查这个确切的格式。但是长度不是静态的,可以是单独的,所以我需要一个可以无限的正则表达式模式
-
那么,
preg_match('~^(?:\d{5}[A-Z])+$~iD', $input)?