C# 不过滤特殊符号的正则表达式
我目前正在使用以下代码行:C# 不过滤特殊符号的正则表达式,c#,regex,C#,Regex,我目前正在使用以下代码行: Regex Regex_Alpha = new Regex(@"[a-zA-Z]+('[a-zA-Z])?[a-zA-Z]*"); 我想做的是过滤文本字段的输入,条件是输入只能是字母和撇号(实际上,我仍然想添加更多,但我正在尝试首先解决这个问题) 现在,它接受所有字符,甚至数字 根据我对正则表达式的理解,我试图用以下方式表达我自己的表达: Regex Regex_Alpha = new Regex(@"^[a-zA-Z'-"+$); 它过滤数字,但不接受撇号符号。
Regex Regex_Alpha = new Regex(@"[a-zA-Z]+('[a-zA-Z])?[a-zA-Z]*");
我想做的是过滤文本字段的输入,条件是输入只能是字母和撇号(实际上,我仍然想添加更多,但我正在尝试首先解决这个问题)
现在,它接受所有字符,甚至数字
根据我对正则表达式的理解,我试图用以下方式表达我自己的表达:
Regex Regex_Alpha = new Regex(@"^[a-zA-Z'-"+$);
它过滤数字,但不接受撇号符号。试图删除@符号并用反斜杠转义字符过滤撇号,但仍然没有用
过滤输入的最佳方法是什么,使其只接受字母和撇号?(一旦我理解了这个符号应该如何工作,我将完成其余的符号)正如我所评论的,您的第一个正则表达式非常适合“字母,两端都没有一个撇号”。但是,它甚至用一个字母匹配任何字符串,因为正则表达式查找输入中的任何匹配项,而不是整个输入是否匹配 您可以通过执行在第二个正则表达式中所做的操作来修复此问题—只需在开始处放置一个
^
,在结束处放置一个$
。这意味着表达式的开始和结束必须匹配输入的开始和结束,因此它确保整个输入仅由字母和可能的撇号组成
关于第二个正则表达式,您有一些问题
- 如果要在
字符串文字中使用双引号,则需要使用两个双引号。(我认为这可能只是您问题中的一个键入错误,因为您当前拥有的内容甚至无法编译。)@“…”
- 你需要用
关闭你的角色类,否则]
和里面的所有东西都会被视为一个字符序列,一个接一个地匹配[
- 如果要在字符类中使用连字符,它必须在开头或结尾,否则会被误认为是“中间”连字符(如
)a-Z
表达式
@“^[a-zA-Z'”-]+$”
应匹配“完全由字母、撇号、引号或连字符组成的任何字符串”。您的第一个表达式看起来像是在尝试“只处理字母,只使用一个可选撇号,只要撇号不在开头或结尾”.这就是你想要的吗?@Rawling,现在是的,但我可能需要添加更多的过滤器,比如添加连字符和点字符。我只需要撇号就可以了,因为我一直在努力解决正则表达式,但我仍然无法解决它。那只是一个印刷错误,对不起。我认为问题不在于我的正则表达式e、 我相信你的答案是正确的,我以前的实验也是如此,但问题还是出现了。我将重新检查我的方法可能出了什么问题,因为我将Regex声明放在了一个单独的类上,我只是调用这些方法来验证字符串。谢谢。@Jack我对你的编辑有些困惑。(我不介意,我只是好奇它是关于什么的。)这是因为;因为你的帖子涵盖的不仅仅是一个拼写错误,所以这个问题不应该以“太本地化”来结束;我通过删除你答案中的“拼写错误”一词来防止这种情况发生:)