2012-02-21 7 views
5

yerdeREGEX - ... Bir düzenli ifade adam değilim, bu yüzden sadece cant bu çevrede başımı almak, biraz yardıma ihtiyacı dize

özel karakteri eşleştirin ben kayıt sayfası yazma ve asp.net kullanıyorum doğrulayıcılar. Bir kelime içinde herhangi bir yerde özel bir karakterle eşleşen bir regex validator'a ihtiyacım var, bu yüzden "ID'nin en az bir özel karaktere sahip olması gerektiğini" belirten gerekliliği karşılayacaktır. İzin verilen karakterler: ! "# $% & '() * +, - /:;.? < => @ [\]^ _` {|} sarma ile ~

Bir kez daha, bir genç değilim ve sorunlarınız Şu anda bu şeyler etrafında başım ... için

şimdi

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

var ama nedense yanı sayıları maçlar ve bazen kelimenin başında karakterleri eşleşmiyor. ..

So ve - '', herkes Kaçmak gerek ... bununla

+0

için steno olduğunu unutmayın –

+0

Sadece bir yan not:. Eğer ASP.NET Üyeliği dava ediyoruz, sen kullanabilirsiniz [ 'MinRequiredNonAlphanumericCharacters'] (http://msdn.microsoft.com/en-us/library/system.web.security.membership .minrequirednonalphanumericcharacters.aspx) -özel karakterlerin parola girildiğinden emin olmak için. –

+0

@TimSchmelter - noooo, dava etmiyor Microsoft, ben üyelik sağlayıcının bu cant'kullanma sebebini :) Bu doğrulama isteğe bağlı olacak çünkü - bu açık veya kapalı, istemci bağlı olarak ihtiyacı ... ve yapmayacağız edilebilir Uygulamamızın tüm müşterileri için uygulamayı zorlaştırabilir. Ancak yan not için teşekkürler .. – Alex

cevap

4

bana yardımcı olabilir lütfen eğer '!'

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

yeah..i gözden kaçan ... Ancak, bazı nedenlerden dolayı "asdf3! #" Doe ifadenizi kullanarak doğrulamak istemiyorum ... belki de .net ile bir şey var ... – Alex

+0

Kaçmaya ihtiyacın var gibi görünüyor! – David

2

Yapması kolay olacaktır zıt

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

o

+1

de kullanamazsınız, bu ihtiyaç duyduğum karakter kümelerinde tanımlanmamış karakterlerle eşleşecektir, örneğin maça veya para birimi işaretleri gibi ... – Alex

+2

bu şekilde, belki bu daha iyi olabilir [^ a-zA-Z0- 9] – BigMan

+0

Beyaz boşlukları da dışarıda bırakmak daha iyi olurdu. [^ A-zA-Z0-9 \ s] ' –

-4

uymuyor Burada regex hakkında daha fazla bilgi edinebilirsiniz eğer özel bir karakteri vardır: http://regex.learncodethehardway.org/

Yapılması zor değil,

iyi şanslar;

+0

link için teşekkürler, ben bu – Alex

+0

rtfm güzel bakacak, ama gerçekten değil – Letseatlunch

+2

SO RTFM cevapları için değil. – toobulkeh

1

Asp.net veya doğrulama uzmanı değil. Ancak, karakter sınıflarının yalnızca [] gibi kaçan karakterlere ihtiyacı vardır. Çizgi -, bir dizi karakteri temsil eder. Bir değişmez olarak kullanılmışsa, bu durumdan kaçınılabilir ve herhangi bir yere konulabilir veya sınıfın başına veya sonuna ([-aa] veya [aa-]) konabilir ve bir literal olarak değerlendirilebilir. Ayrıca, sınıfın başlangıcındaki bir karikatür, 'negatif' bir sınıf anlamını, herhangi bir karakteri, ancak bunlardan ibarettir ([^not me]).

belirli bir motora özgü özel sözdizimi ile sınıflarında diğer yapılar da olabilir (NET bu yolu olabilir, emin değilim). Bazı sekanslar da bir alt sınıfı tetikler.

Özel karakterlerinizi kullanarak test vakamın asp.net doğrulayıcı ile yapıldığı. Emin olmayabilirler, emin değilim. Her ikisi de boş girişi doğrulamıyor gibi görünüyor, bu bir normal ifade olmayabilir.

<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" /> 

Bu seferki şu relavent bir güvenlik sorunu bakmak gibi görünüyor. Not: <+'alpha char', 'alfa', bazı standartlara göre bir dizi geçerli unicode karakterini ifade eder. Bu yolun kapalı olup olmadığını dikkate almayın.

0

Bir bit ve maç karakter aralıkları bu aşağı düzeltme yapabilirsiniz.

[^\p{L}] 

Eğer 1 veya daha fazla maç için gerekirse davanıza özgü olduğu gibi, varsayalım, o zaman bu yanı çalışacak (: Örneğin, bu tüm özel (ve yazdırılabilir) karakterler (dahil unicode) karakterleri ile eşleşen + regex operatör ben özel karakterler içermesini kimlikleri ve şifre gerektiren web siteleri nefret {1,}

[^\p{L}]+