如何使用grep正则匹配仅包含单个数字的字符串
问题原因
你原来的写法grep '[0-9]\{1\}'仅能匹配字符串中存在至少1个数字的内容,不会校验整个字符串的数字总个数,所以包含多个数字的字符串也会被匹配到。
正确正则写法
使用如下命令即可实现仅匹配总共有1个数字的字符串:
echo "exaaaamplee1" | grep '^[^0-9]*[0-9][^0-9]*$'
语法解释
^锚定字符串开头[^0-9]*匹配0个或任意多个非数字字符[0-9]匹配恰好1个数字[^0-9]*匹配数字后剩余的0个或任意多个非数字字符$锚定字符串结尾
以上规则会强制整个字符串从头到尾只能出现1次数字,其余所有字符都必须是非数字,完全符合筛选要求。
测试效果:
- 匹配通过:
exaaaamplee1、1test、a2b、3 - 匹配不通过:
exaaaamplee11、12test、a2b3
内容的提问来源于stack exchange,提问作者Lely22
相关产品推荐
相关产品推荐

