Board logo

标题: 求助 findstr 或 sed 怎么判断变量是否为纯中文字 [打印本页]

作者: vkill     时间: 2006-11-2 07:41    标题: 求助 findstr 或 sed 怎么判断变量是否为纯中文字

set/p "var=" name=

我怎么判断%name%是否为纯中文字,例如"张三"可以,而"张3"等类似则不行

[ Last edited by he200377 on 2006-11-2 at 07:42 AM ]
作者: youxi01     时间: 2006-11-2 08:44
看看我们版主的老帖子:
http://www.cn-dos.net/forum/view ... 8%E8%BE%BE%E5%BC%8F

提一个简单的解决办法(过滤效果不敢恭维):

@echo off
set/p var= name:
echo %var% |findstr "[0-9a-zA-Z]">nul && echo 含非中文!||echo 好的,输入正确!
pause>nul
作者: 无奈何     时间: 2006-11-2 09:41
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^[^\x00-\x80]+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。
作者: namejm     时间: 2006-11-2 09:46
  在2F的基础上写个演示代码,在不考虑输入敏感字符的情况下,可以判断输入的是不是数字和字母的混合格式:
@echo off
set var=
set/p var= 请输入字符串:
echo %var% |findstr "^[0-9a-zA-Z]*$">nul && echo 该字符串是纯数字或纯字母或数字和字母的组合!||echo 该字符串含有数字和字母之外的字符
pause>nul

作者: amao     时间: 2006-11-2 12:42
在这里又学到了grep的一个例子
作者: 9527     时间: 2006-11-3 01:38
echo 我是谁|findstr "^[^a-zA-Z0-9;:|~`!@#%&{}_+-="',/\\\.\*\[\]\^\$\?]*$"
作者: vkill     时间: 2006-11-3 07:17
findstr "^[0-9a-zA-Z] 我在想难道除了字母数字剩下的就是中文吗?

张,三 也算吗?

无奈何斑竹的还没有试,要求是春中文字 ,不包括& | % 等等
作者: vkill     时间: 2006-11-4 07:26


  Quote:
Originally posted by 无奈何 at 2006-11-2 09:41:
sed 的没搞出来,来个 GREP 的吧,
echo %name%|grep -P "^[^\x00-\x80]+$" >nul&& ok!通过!
注意:这个表达式全角符号也会通过。

今天再看看,ASII码值应运的真好~我linux的教材上看没有看到-P的参数,看要找点资料看看了
作者: 无奈何     时间: 2006-11-4 11:56
grep 高版本好像是 2.5 以后加入的参数,-P 参数的作用是用 perl 样式的正则表达式匹配模式。
作者: vkill     时间: 2006-11-9 02:44
echo %name%|sed "s/[\x00-\x80]/,/" |findstr ",">nul ||echo ok
作者: 3742668     时间: 2006-11-9 08:55

@if %var% lss 吖 echo 不是汉字!
据说汉字区位码中一级字库是按拼音来排列的,没有时间测试,有朋友发现bug的吱一声。