REGEX - 在字符串中的任何位置匹配特殊字符

时间:2012-02-21 22:07:41

标签: asp.net .net regex vb.net validation

我不是一个正则表达式的人,所以我需要一些帮助,只是无法理解这个......

我正在编写注册页面并使用asp.net验证器。我需要一个正则表达式验证器来匹配单词中任何位置的特殊字符,因此它将满足要求,即“#34; ID必须至少有一个特殊字符。”#34;允许的字符是: ! " #$%& ' ()* +, - 。 / :; < => ? @ [\] ^ _` {| }〜

再一次,我是一名大三学生,此时此刻我的脑袋已经出现问题......

现在我有

[\[\]\^\$\.\|\?\*\+\(\)\\~`!@#%&-_+={}'""<>:;, ]{1,}

但由于某种原因,它也匹配数字,有时候不会在单词的开头匹配字符...

所以,请,如果有人能帮助我......

5 个答案:

答案 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="^.*[\[\]^$.|?*+()\\~`!@#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></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="^(?!.*&lt;(?:/|[A-Za-z_:])).*[\[\]^$.|?*+()\\~`!@#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></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/

这并不难;

祝你好运;