1

我需要检查一个字符串的格式是否为:xxx[yz]

其中 y 和 z 是两个数字。例如,y 可以是 1000,z 可以是 2000,在这种情况下,这些都是有效的:

xxx1000 xxx1500 xxx1900 xxx2000

有没有办法在正则表达式中实现这一点?

4

2 回答 2

3

我没有看到在这里使用正则表达式的意义,尤其是 ifyzare 变量。使用正则表达式测试格式,然后取最右边的 n 个字符(将其捕获在一组中是最简单的),尝试将其解析为整数并测试它是否在范围内。

如果yz是不变的,请确保继续:

xxx(2000|1[0-9]{3})$
于 2012-09-03T01:21:15.247 回答
2

如果您能提供帮助,这种评估不应该真正出现在正则表达式中。您可以使用正则表达式对格式进行测试,但使用其他函数来测试内容:

$in = "xxx1234";
if( preg_match("/^xxx(\d{4})$/",$in,$m) && $m[1] >= 1000 && $m[1] <= 2000) {
    // ok!
}
于 2012-09-03T01:30:17.990 回答