还在学习正则表达式!我的百分比正则表达式(不遵守 100 限制):
^(?<int>[1-9][0-9]*|[0])(?<dec>\.[0-9]+)?\%?$
这应该允许:
[1-9]
以不同于 0 的数字开头。不允许使用“004.34”之类的百分比。[0-9]*
...后跟 0 到 9 之间的任何数字|[0]
或以单个 0 开头
...将该组捕获为“int”组。然后:
(?<dec>\.[0-9]+)?
一个可选组,其中一个点仅在后跟至少一个 0 到 9 之间的数字时才被允许。我不希望人们输入即“33”。
假设我是对的,测试:
preg_match('/^(?<int>[1-9][0-9]*|[0])(?<dec>\.[0-9]+)?\%?$/i', '0.32%', $result);
给我这个结果,这实际上是正确的,但是:
Array
(
[0] => 0.32%
[int] => 0
[1] => 0
[dec] => .32
[2] => .32
)
如何避免捕获百分比“%”符号(in $result[0]
)?