Bash脚本如何实现严格校验用户输入为2位数字的需求?
Bash严格校验2位数字输入的调整方案
你现有规则的问题出在正则表达式的量词上:{,2}表示匹配0到2位数字,所以1位数字、空输入都会命中规则通过校验,只要修改正则的量词规则即可实现恰好2位的校验。
调整后的完整代码
#!/bin/bash read -p "Enter Two Numbers " number input=$number # 正则修改为强制匹配恰好2位数字 re='^[0-9]{2}$' if [[ $number =~ $re ]]; then echo "'$input'" else echo "'$input' Please Enter Two Numbers" fi
修改说明
- 核心改动仅为正则表达式部分:将
re='^[0-9]{,2}$'改为re='^[0-9]{2}$' {2}量词限定前面的数字匹配规则必须恰好生效2次,搭配开头的^和结尾的$,可以保证整个输入字符串完全符合「2位纯数字」的要求,1位数字、3位及以上数字、带非数字字符的输入都会被拦截。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

