0

如何编写只匹配数字、文本和这两个特殊字符的正则表达式 # 和 - [a-zA-Z0-9#-\s]+ 其他任何内容都应该被拒绝

4

3 回答 3

3

您可以使用类似于此的正则表达式

^(\d|[a-z]|[A-Z]|#|-)*$

在我用于检查 c# 中的正则表达式的代码下方:

string input = @"343243-2df---ds#SFD#FD";
string pattern = @"^(\d|[a-z]|[A-Z]|#|-)*$";

Console.WriteLine(Regex.Match(input, pattern).Success);
Console.ReadLine();

此外,对于未来的参考资料,您可以查看这个正则表达式站点:http ://www.regular-expressions.info/

于 2012-11-27T07:43:07.300 回答
3

我相信以下模式适用于 C#:

string pattern = @"^[a-zA-Z\d\s#-]*$";

我刚刚在 C# 交互中尝试了几个测试用例:

Regex.Match("", pattern).Success
> true
Regex.Match("asdf 2F#-#-", pattern).Success
> true
Regex.Match("asdf~asdf", pattern).Success
> false

如果您不想接受空字符串,只需将模式中的 * 更改为 +。此外,您没有声明要在问题中匹配空格,但您的示例模式确实匹配空格。如果您不想匹配空格,请删除 \s。

更新:根据 Rawling 的建议进行编辑。

于 2012-11-27T08:31:17.357 回答
0

试试这个:

^([a-z]|[A-Z]|[#]|[0-9]|[-])+$
于 2012-11-27T07:38:27.110 回答