我不是一个正则表达式的人,所以我需要一些帮助,只是无法理解这个......
我正在编写注册页面并使用asp.net验证器。我需要一个正则表达式验证器来匹配单词中任何位置的特殊字符,因此它将满足要求,即“#34; ID必须至少有一个特殊字符。”#34;允许的字符是: ! " #$%& ' ()* +, - 。 / :; < => ? @ [\] ^ _` {| }〜
再一次,我是一名大三学生,此时此刻我的脑袋已经出现问题......
现在我有
[\[\]\^\$\.\|\?\*\+\(\)\\~`!@#%&-_+={}'""<>:;, ]{1,}
但由于某种原因,它也匹配数字,有时候不会在单词的开头匹配字符...
所以,请,如果有人能帮助我......
答案 0 :(得分:5)
你需要逃避' - '和'!'
[\[\]\^\$\.\|\?\*\+\(\)\\~`\!@#%&\-_+={}'""<>:;, ]{1,}
答案 1 :(得分:3)
做相反的事情会更容易
^[0-9]|[a-z]|[A-Z]$
如果不匹配则有特殊字符
答案 2 :(得分:1)
不是asp.net或验证专家。但是,角色类只需要像[]
一样转义某些字符。短划线-
表示一系列字符。如果用作文字,可以将其转义并放在任何位置,也可以放在课程的开头或结尾([-aa]
或[aa-]
),并视为文字。此外,课程开头的插入符号表示“否定”类的含义,除了这些([^not me]
)之外的任何字符。
在类中可能有其他构造具有特定引擎特有的特殊语法(.NET可能是这种方式,我不确定)。我想,某些序列也触发了一个子类。
以下是使用您的特殊字符的asp.net验证器的测试用例。他们可能是相关的我不确定。两者似乎都没有验证空白输入,这可能不是正则表达式。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Input is not valid."
ValidationExpression="^.*[\[\]^$.|?*+()\\~`!@#%&\-_+={}'"<>:;,\ ].*$"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
如果有相关性,这个似乎会处理一个安全问题。请注意<+'alpha char'
其中'alpha'是指一系列有效的unicode字符,根据我认为的一些标准。
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="Input is not valid."
ValidationExpression="^(?!.*<(?:/|[A-Za-z_:])).*[\[\]^$.|?*+()\\~`!@#%&\-_+={}'"<>:;,\ ].*$"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
请忽略这是否已经过时了。
答案 3 :(得分:0)
您可以将其缩小一点并匹配字符范围。例如,这匹配所有特殊(和可打印)字符(包括unicode)字符:
[^\p{L}]
我想如果您需要匹配1个或更多,特定于您的情况,那么这也可以工作(注意+
正则表达式运算符是{1,}
的简写
[^\p{L}]+
答案 4 :(得分:-4)
您可以在此处了解有关正则表达式的更多信息: http://regex.learncodethehardway.org/
这并不难;
祝你好运;