为什么输入要检查合法性
平时用软件时,你有没有遇到过填表单弹出提示‘请输入正确的手机号’?这背后就是‘条件判断输入合法性’在起作用。程序不能无脑接收所有内容,得判断用户输的是不是符合要求,比如邮箱格式对不对、年龄是不是负数、密码够不够长。
不检查的话,轻则数据乱掉,重则系统崩溃甚至被攻击。比如让人输入年龄,结果填了个‘abc’,程序一算术直接报错。所以,提前做判断是必须的。
常见的判断场景
最常见的就是注册页面。用户名不能为空,邮箱得带@,密码要包含数字和字母。这些规则都需要代码一条条去验证。比如用户提交了表单,程序先看邮箱里有没有@和.,没有就退回去让用户重填。
再比如财务系统,输入金额不能是负数,也不能是文字。这时候就得写条件判断:如果是负数或非数字,就提示错误。
用代码怎么实现
拿Python举个例子,判断一个输入是否为有效的正整数:
user_input = input("请输入一个正整数:")
if user_input.isdigit():
num = int(user_input)
if num > 0:
print("输入合法")
else:
print("数值必须大于0")
else:
print("请输入有效的数字")这里用了 isdigit() 判断是不是全由数字组成,再检查大小。如果用户输了个 -5,虽然也是数字,但不符合‘正整数’的要求,照样被拦下。
前端和后端都要设防
有人觉得,在网页上用HTML限制一下输入类型就够了,比如type=\"number\"。但这是表面功夫,用户可以改代码绕过。真正安全的做法是在服务器端也做一次完整检查。
好比小区大门有门禁,楼道口还得再设一道锁。前端提示能提升体验,后端验证才是底线。
别忽视边界情况
检查输入时,容易忽略一些边缘情况。比如手机号通常是11位,但有人输11个8,虽然格式对,但显然不是真实号码。这种就得结合业务逻辑进一步判断。
还有空格问题。用户复制粘贴时可能带前后空格,看着像正常邮箱,其实系统匹配不了。这时候得加一步 strip() 去掉多余空格再判断。
再比如日期输入,2月30号这种不存在的日子,光判断格式正确没用,还得校验实际是否存在。