2017-01-12 7 views
0

私は助けが必要な問題があります。特定の文字列にA-Z、ハイフン、アポストロフィとアクセント(例、ウムラウトなど)のみが含まれているかどうかを確認しようとしています。空白と無効な文字のJavaScriptチェック

私には次のようなものがありますが、動作しません。

var lastNameValidation = /^[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]$/; 

var customerFullName = (inputData.customerName).replace(/\s/g, ""); 

if (!(customerFullName.matches(lastNameValidation))) { 
    inputValidation += 'Invalid characters in first or last name. Only alphabetic letters, apostrophe, accents and hypen characters allowed<br/>'; 
} 

(私がチェックして警告ボックスを使用)

を私はcustomerFullNameから空白を削除して、正常に動作するように見える私は.matchesと.TESTの両方を試してみましたが、私のために働くように見えるでもないしました!

私が間違っていることを知っている人はいますか?

+0

それは.replace' 'より、'一致が見つかった場合はブール値を返します.test'を使用することがはるかに簡単だ末 – Rishabh

答えて

0

var lastNameValidation = /^[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$/i 

にあなたの正規表現を変更し、(.match使用

。 .matches()は文字列の正規表現マッチングではありません。

http://www.w3schools.com/jsref/jsref_match.asp

var check = function() { 
 

 
    var lastNameValidation = /^[a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ]+$/i 
 
    
 
    var custname = document.querySelector("#name").value; 
 

 
    var customerFullName = custname.replace(/\s/g, ""); 
 

 
    if (!(customerFullName.match(lastNameValidation))) { 
 
    alert('Invalid characters in first or last name. Only alphabetic letters, apostrophe, accents and hypen characters allowed<br/>'); 
 
    } else { 
 
    alert("perfect") 
 
    } 
 
}
<input id="name"> 
 
<input type="button" value="check" onclick="check()">

+0

で+ $を追加します。 – Stilltorik

+0

.replaceは名前の文字列間のスペースをOPのみで削除するために使用されます。つまり、john doeがjohndoe – Deep

+0

に変更されます。 – user3600952