我目前正在使用以下代码行:
Regex Regex_Alpha = new Regex(@"[a-zA-Z]+('[a-zA-Z])?[a-zA-Z]*");
我想要做的是过滤文本字段的输入,条件是输入应该只是字母和撇号符号(实际上,我还想添加更多,但我想先解决这个问题。)< / p>
现在,它接受所有字符,甚至数字。
根据我对Regex的理解,我尝试在以下行中制定自己的表达式:
Regex Regex_Alpha = new Regex(@"^[a-zA-Z'-"+$);
它会过滤数字,但不接受撇号。试图删除@符号并使用反斜杠转义字符过滤撇号,但仍无用。
过滤输入的最佳方法应该是什么?它只接受字母和撇号? (一旦我理解了这个符号应该如何工作,我会做其余的符号)
答案 0 :(得分:1)
正如我所评论的那样,你的第一个正则表达式是一个相当不错的“字母,一个撇号不在两端”。但是,它匹配任何字符串甚至是单个字母,因为正则表达式在输入中查找任何匹配,而不是整个输入匹配。
您可以通过执行第二个正则表达式中的操作来解决此问题 - 只需在开头添加^
,在结尾添加$
。这意味着表达式的开头和结尾必须匹配输入的开头和结尾,因此它确保整个输入仅由字母和可能的撇号组成。
关于你的第二个正则表达式,你有一些问题。
@"..."
字符串文字中使用双引号,则需要输入两个双引号。 (我认为这可能只是你问题中的打字错误,因为你现在所拥有的甚至都不会编译。)]
关闭角色类,否则[
及其中的所有内容都会被视为一系列匹配的字符,一个接一个。A-Z
中)。表达式@"^[a-zA-Z'""-]+$"
应匹配“完全由字母,撇号,引号或连字符组成的任何字符串”。