C# 用于检测以下任何字符的正则表达式:!@$%^&;*()<&燃气轮机‘’+;[ ] ? { } | , ; : . “;~`
您好,我正在尝试确保文本框不包含以下任何字符:C# 用于检测以下任何字符的正则表达式:!@$%^&;*()<&燃气轮机‘’+;[ ] ? { } | , ; : . “;~`,c#,regex,C#,Regex,您好,我正在尝试确保文本框不包含以下任何字符: ! @ # $ % ^ & * ( ) < > ‘ ’+ [ ] ? { } | , ; : . “ ~ ` !@$%^&*( ) < > ‘ ’+ [ ] ? { } | , ; : . “ ~ ` 我试图将正则表达式与C#服务器端代码结合使用: 如下所示(但我认为我的正则表达式是错误的): Regex reg=newregex(@“^[^\%\/\\\\&\?\,\'\\:\!\+\$\\\\\\\\^*(\)\\\\\
! @ # $ % ^ & * ( ) < > ‘ ’+ [ ] ? { } | , ; : . “ ~ `
!@$%^&*( ) < > ‘ ’+ [ ] ? { } | , ; : . “ ~ `
我试图将正则表达式与C#服务器端代码结合使用:
如下所示(但我认为我的正则表达式是错误的):
Regex reg=newregex(@“^[^\%\/\\\\&\?\,\'\\:\!\+\$\\\\\\\\^*(\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\`
如果(!Regex.IsMatch(Textbox\u timeline.Text.Trim(),@“^[^\%\/\\\\&\?\,\';\:\!\-]+$”)
AddError(“时间表名称不得包含以下字符:“+@”\%\/\\\&\?`、\'\;\:\!\-”;
如果您希望可读的代码,请使用该方法:
var escaped = Regex.Escape("!@#$%^&*()<>‘’+[]?{}|,;:.“~`");
var regex = new Regex($"[{escaped}]");
var-escaped=Regex.Escape(“!@$%^&*()”+[]?{}},;:.“~`”);
var regex=new regex($“[{escape}]”);
这比手动转义每个字符容易得多
您应该从正则表达式中删除^
和$
。您希望检测这些字符是否在目标字符串中,但在正则表达式中使用这些字符将意味着仅当每个字符都来自该列表时才匹配
(此代码尚未测试,因为我没有可用的编译器)
^
如果作为方括号中的第一个字符出现,则表示匹配除以下字符外的任何字符
\%\/\\\&\?\,\'\;\:\!\+\$#\^\*\(\)\|~]
用这个
^[\%\/\\\&\?\,\'\;\:\!\+\$#\^\*\(\)\|~^@]+` or `^[\^\%\/\\\&\?\,\'\;\:\!\+\$#\^\*\(\)\|~@]+
要解决此问题。只需抓取您想要的任何字符
[!@$%^&*()“+[]?{}},;::“~`]
这就是你的正则表达式。然后用!`简单的倒过来就是你需要检查输入是否有效。现在第一个问题是……这些字符是你不想要的还是你键盘上的字符,或者你只想要A-Z,0-9?如果你这样做的话,没有必要在字符类中转义这些字符:[][!@$%^&*()“+?{}|,;:.“~`]
。感谢您的回复。方括号需要用反斜杠删除。
\%\/\\\&\?\,\'\;\:\!\+\$#\^\*\(\)\|~]
^[\%\/\\\&\?\,\'\;\:\!\+\$#\^\*\(\)\|~^@]+` or `^[\^\%\/\\\&\?\,\'\;\:\!\+\$#\^\*\(\)\|~@]+