2011-09-13 22 views
7

Bir formu burada http://regexlib.com/ bulunan düzenli bir ifade kullanarak doğrulamaya çalışıyorum. Yapmaya çalıştığım şey, a-z, virgül ve kesme işaretleri dışındaki tüm karakterleri filtrelemek. Bu kodu kullanırsanız:Normal ifadelerde kaçış mı?

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z'-]+)$" /> 

aşağıdaki hatayı alıyorum: Eşsiz [] ifadesinde.

<cfinput name="FirstName" type="text" class="fieldwidth" maxlength="90" required="yes" validateat="onsubmit,onserver" message="Please ensure you give your First Name and it does not contain any special characters except hyphens or apostrophes." validate="regular_expression" pattern="^([a-zA-Z-]+)$" /> 

Yani merak ediyorum normal ifadeler kullanılırken kesme kaçmak için bazı özel yol var: Ben Bu kodu kullanırsanız çalışır (ama kesme izin vermez) çünkü bu kesme işareti ile ilgilidir anladım?

DÜZENLEME

ben sorunu (Xanatos sayesinde) neden olup nerede buldum, bunu düzeltmek için ne kadar emin değildi. Temel olarak CF, aşağıdaki gibi alanı doğrulamak için bir gizli alanı oluşturuyor:

<input type='hidden' name='FirstName_CFFORMREGEX' value='^([a-zA-Z'-]+)$'> 

bu değer turlu kesme yerine konuşma işareti kullandığından, bu değer son olarak kesme uğratmaktadır.

+0

kesme işareti özel bir karakterdir ve birlikte adýnýnönüne standart metin kaçan gerekir (o tek teklifi için kod): Yani bunu dönüştürür \ ', desen deneyin = "^ ([a-zA-Z \' -] +) $" HTH – John

+1

@John Emin misiniz? Ve ne anlama geliyor? Regex "dilinde" nasıl kullanılır? – xanatos

+0

'Denerim' diyorum, bu yüzden emin değilim, regex'in birçok çeşidi vardır ve etiketli ifadelerin yerini almak, Word 2002 programımın dışındadır. – John

cevap

7

Cfinput uygulamasında bir hata olduğunu düşünüyorum. Muhtemelen bir Javascript Regex'te desende geçirdiğiniz dizeyi kullanır, ancak alıntı yapmak için ' kullanır. '

new Regex('^([a-zA-Z'-]+)$') 

\x27 ile alıntı değiştirilmesi deneyin

+0

Bu xanato için teşekkürler, ne yazık ki işe yaramıyor. Javascript doğrulama aslında orijinalim ile iyi çalışıyor ancak sorunun olduğu sunucu tarafı doğrulaması. Bununla daha fazla ilgilenmezsem, sunucu tarafında kendim doğrulamak için bir şeyler yazmayı deneyebilirim. – Kristian82

+0

@ Kristian82 Bunu deneyin :-) – xanatos

+1

Yorum yaptığım hiç bir anlamı yok, çok teşekkürler ... – Kristian82

0

Eşsiz], tirenin, çevresindeki iki karakter arasındaki bir aralık anlamına gelecek şekilde işlem görmesidir. Tire'yi en iyi uygulama olarak en başa yerleştirin.

^([-a-zA-Z']+)$ 
+2

yapacaktır. Sonuna koymak aynı iyi uygulama, burada bir fark yok. – stema