求修改一个正则表达式!

鼻涕蛋蛋 2009-03-02 02:28:59
如题。有个项目要求很简单,就是验证输入0-9和a-z,A-Z的数字和字母。
现在的验证方法是:

public static bool IsNumberOREnglish(string str)
{
if (Regex.IsMatch(str, @"[0-9a-zA-Z]*${1,}", RegexOptions.IgnoreCase))
return true;
else
return false;
}

本来觉得没啥问题。可是,用的时候发现诸如:@!#$%^&* 此类的符号,都返回true;无语了。。。。
一直用的都是比较简单的这种判断,可能是对正则的理解不深,请指点一下!感谢!
...全文
68 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
止戈而立 2009-03-02
  • 打赏
  • 举报
回复
另外,既然你已经写了a-zA-Z,那就没有必要在后面加个RegexOptions.IgnoreCase了。
这已经把大小写全考虑进去了,不用再去忽略大小写了。
止戈而立 2009-03-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yhnxxx 的回复:]
@"[0-9a-zA-Z]*${1,}" -----@"^[0-9a-zA-Z]+$"
这两者有啥不同么?解惑一下吧。。不是很明白呢!
感谢!
[/Quote]

[0-9a-zA-Z]*${1,}这正则本身就有问题,$匹配结尾,把它放那里,明显是不对的
没有匹配开头,也就是说,少了一个^在最前面,不能达到验证的效果。
如果你一定要用上{1,}的话,也以这样写[0-9a-zA-Z]{1,}
因此,你可以写成^[0-9a-zA-Z]{1,}$
这样的话,跟我上面写的那个是完全一样的。
鼻涕蛋蛋 2009-03-02
  • 打赏
  • 举报
回复
@"[0-9a-zA-Z]*${1,}" -----@"^[0-9a-zA-Z]+$"
这两者有啥不同么?解惑一下吧。。不是很明白呢!
感谢!
止戈而立 2009-03-02
  • 打赏
  • 举报
回复
其实这样就行了:

public static bool IsNumberOREnglish(string str)
{
return Regex.IsMatch(str, @"^[0-9a-zA-Z]+$");
}
止戈而立 2009-03-02
  • 打赏
  • 举报
回复
if (Regex.IsMatch(str, @"^[0-9a-zA-Z]+$", RegexOptions.IgnoreCase))
正则表达式自动生成器是一个智能、易用的正则表达式生成、测试以及字符串提取工具。正则表达式库让你可以直接借用正则表达式,而无需自己费脑筋。“正则表达式自动生成器”可以自动生成正则表达式,测试正则表达式,可视化显示结果,导出提取字符串,你所要做的,仅仅是几下鼠标点击! 正则表达式自动生成器主要功能: 自动生成正则表达式 编辑并测试正则表达式 多向导页,可在多个源文本上测试同一个正则表达式(标准版无此功能) 多页参考生成正则表达式(标准版无此功能) 自动检查和修改生成的正则表达式的正确性 以可视方式呈现测试结果 从文本文件中获取源文本 从HTML页面中获取源代码 一键导出匹配文本 一键导出提取字符组,并按自定义的分隔符进行分隔 保存项目以便重复测试和修改 在“设计元素”中学习并创建正则表达式 直接从正则表达式库中选择利用正则表达式 多语种 100%-200%大字体下完美显示 你可以从任何纯文本中提取有规律的文字,比如txt文件,XML文件,csv文件,HTML文件等,然后导出到剪贴板或文本文件中,你可以很方便地把它们导入到程序,数据库,excel文件等。 正则表达式自动生成器现在有三个语言版本: 英语,简体中文,繁体中文,我们会在以后加入其他语言,比如日语,德语和法语等。 正则表达式自动生成器更新内容: 1、修复一些小bug。 2、增加自定义组和限定词的正则表达式 3、增加自定义窗口背景 4、增加自定义按钮背景 5、修改软件时间为UTC时间(日志除外) 6、修改更新模块 正则表达式自动生成器截图:

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧