2012-02-21 56 views
5

中我不是一個正則表達式的傢伙,所以我需要一點點幫助,只是不能讓我解決這個頭......正則表達式 - 任何地方比賽特殊字符的字符串

我寫註冊頁面,並使用asp.net驗證。我需要一個正則表達式驗證器來匹配一個單詞內任何地方的特殊字符,因此它將滿足要求「ID必須至少有一個特殊字符」。允許的字符是: ! 「#$%&'()* +, - /:;?< => @ [\]^ _`{|}〜

再一次,我的大三學生,並有問題與包裝我的腦袋解決這個東西,在這一刻......

現在我有

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

但它匹配的是數字,以及由於某種原因,有時不字開頭的字符匹配。 ..

所以請,如果有人可以幫助我與...

+0

我討厭那種需要ID和密碼包含特殊字符的網站 – 2012-02-21 22:15:11

+0

只是一個側面說明:如果你起訴ASP.NET會員,您可以使用['MinRequiredNonAlphanumericCharacters'](http://msdn.microsoft.com/en-us/library/system.web.security.membership .minrequirednonalphanumericcharacters.aspx)-property以確保在密碼中輸入特殊字符。 – 2012-02-21 22:19:52

+0

@TimSchmelter - noooo,不起訴微軟:)爲什麼我不能在成員資格提供者中使用這個,是因爲這個驗證是可選的 - 它可以打開或關閉,這取決於客戶的需求......我們不會能夠爲我們的應用程序的所有客戶端強制執行它。謝謝你的旁註..雖然.. – Alex 2012-02-21 22:31:51

回答

4

你需要逃避「 - 」和「!」

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

是啊..我忽視了...然而,由於某種原因字符串asdf3!#「不想用你的表達來驗證......也許它與某事有關.net ... – Alex 2012-02-21 22:28:07

+0

看起來你需要逃脫!以及 – David 2012-02-21 22:41:48

2

它會更容易做相反

^[0-9]|[a-z]|[A-Z]$

它有一個特殊的字符,如果它不匹配

+1

不能使用這個,它會匹配字符集中我沒有定義的字符集,如黑桃或貨幣符號... – Alex 2012-02-21 22:29:05

+2

這樣,也許這將會更好 [^ a-zA-Z0- 9] – BigMan 2014-04-23 09:09:21

+0

更好的辦法是排除空格太''[^ a-zA-Z0-9 \ s]' – 2014-11-09 19:23:57

-4

您可以瞭解更多關於正則表達式的位置: http://regex.learncodethehardway.org/

這並不難做到;

祝你好運;

+0

感謝您的鏈接,我會看看這個 – Alex 2012-02-21 22:23:47

+0

rtfm不錯,但不是真的 – Letseatlunch 2012-02-21 22:43:58

+2

SO是不適合RTFM的答案。 – toobulkeh 2014-03-22 00:59:38

1

不是asp.net或驗證專家。但是,角色類僅需要某些字符,如[]。破折號-代表一系列字符。如果用作文字,它可以被轉義並放在任何地方,或者可以放在課程的開始或結尾([-aa][aa-]),並被視爲文字。此外,在課程開始處插入一個脫字號,表示「否定」類的含義,但是這些字符([^not me])。

有可能是在課堂上其他構造獨特,以特定的發動機特殊的語法(.NET可能是這個樣子,我不知道)。我猜想某些序列也觸發了一個子類。

這裏是我的測試情況下與使用特殊字符asp.net驗證。他們可能是相關的,我不確定。兩者似乎都不驗證空白輸入,這可能不是正則表達式。

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
     ValidationExpression="^.*[\[\]^$.|?*+()\\~`[email protected]#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></asp:RegularExpressionValidator> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

這一個似乎照顧了一個安全問題,如果這相關。請注意0​​,其中'alpha'表示根據我認爲符合某些標準的一系列有效unicode字符。

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
     ValidationExpression="^(?!.*&lt;(?:/|[A-Za-z_:])).*[\[\]^$.|?*+()\\~`[email protected]#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></asp:RegularExpressionValidator> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

只是無視這種情況。

0

您可以稍微修剪一下並匹配字符範圍。例如,這符合所有專(兼打印)字符(包括Unicode)字符:

[^\p{L}] 

我想,如果你需要匹配1或更多,因爲是具體到你的情況,那麼這將工作,以及(需要注意的是+正則表達式運算符是簡寫{1,}

[^\p{L}]+ 
相關問題