正则表达式仅数字和字符

Posted

技术标签:

【中文标题】正则表达式仅数字和字符【英文标题】:Regex Expression Only Numbers and Characters 【发布时间】:2012-02-19 04:59:42 【问题描述】:

我为我的 C# 文件创建了以下正则表达式。基本上,我希望用户的输入只能是常规字符(A-Z 小写或大写)和数字。 (空格或符号)。

[a-zA-Z0-9]

由于某种原因,它只有在它本身是一个符号时才会失败。如果有字符混合,则表达式通过。

我可以向你展示我如何实现它的代码,但我认为这是我的表达方式。

谢谢!

【问题讨论】:

也许你忘了加号? [a-zA-Z0-9]+ 【参考方案1】:

问题是它可以匹配任何地方。你需要锚点:

^[a-zA-Z0-9]+\z

^ 匹配字符串的开头,\z 匹配字符串的结尾。

(注意:在 .NET 正则表达式中,$ 匹配带有可选换行符的字符串结尾。)

【讨论】:

太棒了,谢谢! 我知道您已经回答了我的问题,但现在我尝试将第一个字符设为大写。我试过这个我在互联网上找到的但是当使用大写输入时它似乎不起作用:^[A-Z][a-zA-Z0-9]+$ 看起来不错...您输入的是一个大写字母吗?它应该是^[A-Z][a-zA-Z0-9]*$ @hungdoan:差不多,但不完全是:\w 包括下划线_。我想它可能是[^\W_],但我认为到那时就不太清楚了。 (除此之外,在 .NET 中,\w 匹配所有 Unicode 字母和数字,而不仅仅是 ASCII 字母和数字,这似乎不是问题所要求的。)【参考方案2】:

这是因为它会匹配你需要的字符串中的任何字符。 强制它匹配整个字符串而不仅仅是它的一部分

^[0-9a-zA-Z]*$

【讨论】:

【参考方案3】:

该正则表达式将匹配字符串中的每个字母数字字符作为单独的匹配项。

如果您想确保用户输入的整个字符串仅包含字母数字字符,您需要执行以下操作:

^[a-zA-Z0-9]+$

【讨论】:

【参考方案4】:

您确定要检查整个字符串吗?那就是你使用像这样的表达式 ^[a-zA-Z0-9]*$ 其中^ 表示字符串的开头,$ 表示字符串的结尾?

【讨论】:

以上是关于正则表达式仅数字和字符的主要内容,如果未能解决你的问题,请参考以下文章

将字母和数字匹配在一起或仅匹配字母的正则表达式

如何使用正则表达式从字符串中删除字符串和特殊字符并仅显示不带逗号的数字?

使用正则表达式仅获取某个字符(#)之后的数字[关闭]

正则表达式仅用于字符串中的数字?

Laravel - 使用正则表达式仅验证字母、数字和空格

如何编写正则表达式以仅匹配数字、字母和破折号?