【发布时间】:2012-02-19 04:59:42
【问题描述】:
我为我的 C# 文件创建了以下正则表达式。基本上,我希望用户的输入只能是常规字符(A-Z 小写或大写)和数字。 (空格或符号)。
[a-zA-Z0-9]
由于某种原因,它只有在它本身是一个符号时才会失败。如果有字符混合,则表达式通过。
我可以向你展示我如何实现它的代码,但我认为这是我的表达方式。
谢谢!
【问题讨论】:
-
也许你忘了加号? [a-zA-Z0-9]+
我为我的 C# 文件创建了以下正则表达式。基本上,我希望用户的输入只能是常规字符(A-Z 小写或大写)和数字。 (空格或符号)。
[a-zA-Z0-9]
由于某种原因,它只有在它本身是一个符号时才会失败。如果有字符混合,则表达式通过。
我可以向你展示我如何实现它的代码,但我认为这是我的表达方式。
谢谢!
【问题讨论】:
问题是它可以匹配任何地方。你需要锚点:
^[a-zA-Z0-9]+\z
^ 匹配字符串的开头,\z 匹配字符串的结尾。
(注意:在 .NET 正则表达式中,$ 匹配带有可选换行符的字符串结尾。)
【讨论】:
^[A-Z][a-zA-Z0-9]*$。
\w 包括下划线_。我想它可能是[^\W_],但我认为到那时就不太清楚了。 (除此之外,在 .NET 中,\w 匹配所有 Unicode 字母和数字,而不仅仅是 ASCII 字母和数字,这似乎不是问题所要求的。)
这是因为它会匹配你需要的字符串中的任何字符。 强制它匹配整个字符串而不仅仅是它的一部分
^[0-9a-zA-Z]*$
【讨论】:
该正则表达式将匹配字符串中的每个字母数字字符作为单独的匹配项。
如果您想确保用户输入的整个字符串仅包含字母数字字符,您需要执行以下操作:
^[a-zA-Z0-9]+$
【讨论】:
您确定要检查整个字符串吗?那就是你使用像这样的表达式
^[a-zA-Z0-9]*$
其中^ 表示字符串的开头,$ 表示字符串的结尾?
【讨论】: