2017-02-11 15 views
1

名前は、ユーザがタイプである場合に有効でない理由:名前検証が無効なのはなぜですか?

André 
René 
François 
Anne-Marie 

CODE:

var myNameFilter = /^([a-zA-Z ]+)$/; 
var a = $('#firstname').val(); 
if(a=='') { 
    alert("You stupid your name is empty. Fill it in NOW!!!"); 
    return false; 

} else if (!myNameFilter.test(a)) { 
    alert("Are you stupid? how can you type your name wrong. you idiot. fix it, dont call me for this."); 
    return false; 
} 
+0

をご確認ください: 'é'、 'C'と' -' –

+0

がどのように私はすべてのそれらのどれも標準文字を許可することができます? (すべてフランス語、オランダ人は厄介な文字を持っています)。 – YumYumYum

+0

名前の検証は難しい作業です。あなたの正規表現を殺す名前が常にあります:http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ –

答えて

1

[-ZA-Z]は英語のみ検出。それらはユニコード文字を含んでいるので、それを検出しません。すべてのこれらの名前は、あなたの文字クラスにマッチしていない文字が含まれているため は今それを

var a="André,René,Fran çois,Anne-Marie,éç,é-çé ç,Éric,Hélène".split(","); 
 
var myNameFilter = /^([a-zA-Z\-éçèàùâêîôûëïüÿçÉ\s]+)$/; 
 
i=0; 
 
while(i<a.length){ 
 
console.log(a[i]+"->"+myNameFilter.test(a[i])); 
 
    i++; 
 
}

+1

は、 çois'にはスペースがあり、 –

+1

が検出されています。もう一度確認してください –

+1

'Éric'、'Hélène' – Toto

関連する問題