我正在努力想出一个以字母开头的正则表达式,后跟只有字母,空格,逗号,圆点,&符号,撇号和连字符。
然而,&符号让我头疼。只要它出现在输入字符串中,正则表达式就不再匹配。
我在一个ASP.net项目中使用正则表达式,在TextInput
(在项目中创建的自定义控件)的“格式”属性中使用C#。在其中,我使用Regex.IsMatch(Text, Format)
来匹配它。
例如,使用此正则表达式:
^[a-zA-Z][a-zA-Z&.,'\- ]*$
结果是:
John' william-david Pass
John, william'david allen--tony-'' Pass
John, william&david Fail
每当我在输入字符串中放置&
时,正则表达式不再匹配,但没有它,一切正常。
如何解决我的问题?为什么&符号会引起问题?
注意:
^[a-zA-Z][a-zA-Z\&.,'\- ]*$
来逃避&符号,但它有同样的问题^[a-zA-Z][&a-zA-Z.,'\- ]*$
或^[a-zA-Z][a-zA-Z.,'\-\& ]*$
的开头或结尾但是它也不起作用答案 0 :(得分:2)
你的问题出在其他地方。以下表达式的计算结果为true
:
Regex.IsMatch(@"John, william&david", @"^[a-zA-Z][a-zA-Z&.,'\- ]*$")
答案 1 :(得分:0)
您在评论中提到您的问题与C#有关,因此我将在该背景下回答您的问题。如果&符号(&
)真正为您的角色类提供问题,则应以其他方式指定它。
幸运的是,C#支持hex escape sequences,这意味着您可以将&
指定为\x26
。
例如,而不是:
^[a-zA-Z][a-zA-Z&.,'\- ]*$
使用
^[a-zA-Z][a-zA-Z\x26.,'\- ]*$
如果这不能解决您的问题,那么您的问题不是&
,而是其他问题。