atr*_*nce 1 php regex preg-match
所以我知道使用php is_numeric函数会更容易,但我要做的是创建一个正则表达式,主要用于学习正则表达式,以测试测试分数.范围可以是0-100,但可以有2个小数位.这就是我到目前为止所做的工作.
if (preg_match("^([0-9]){2,3})(.[0-9]{2})?$([0-9]{1})?$", $quiz1))
{
echo "match";
}
else {
$error = true;
}
Run Code Online (Sandbox Code Playgroud)
如果我正确地思考字面含义:
字符串的开头找到字符0-9,两个地方.可选的字符串十进制结束,并找到字符0-9,两个地方.可选的字符串结尾查找字符0-9,表示1个位置.
为什么不这样的?
/^(?:100|\d{1,2})(?:\.\d{1,2})?$/
Run Code Online (Sandbox Code Playgroud)
结果:
php> $ tests = array(0,5,10,50,100,99.5,75.43,75.436,101);
php> foreach($ tests as $ test){print $ test." - ".preg_match("/ ^(?:100 |\d {1,2})(?:\.\ d {1,2})?$ /",$ test)."\n" 个; }
0 - 1
5 - 1
10 - 1
50 - 1
100 - 1
99.5 - 1
75.43 - 1
75.436 - 0
101 - 0
75F43 - 0
即使我添加斜杠并删除额外的东西,你的工作也不起作用).
php> foreach($ tests as $ test){print $ test." - ".preg_match("/ ^([0-9] {2,3})(.[0-9] {2})?$([0-9] {1})?$ /",$ test)."\n" 个; 0 - 0
5 - 0
10 - 1
50 - 1
100 - 1
99.5 - 0
75.43 - 1
75.436 - 0
101-1
75F43 - 1
| 归档时间: |
|
| 查看次数: |
10273 次 |
| 最近记录: |