2017-01-12 2 views
0

도움이 필요한 문제가 있습니다. 특정 문자열에 A-Z, 하이픈, 아포스트로피 및 악센트 (예 : 움라우트 등)가 포함되어 있는지 확인하려고합니다.공백 문자와 유효하지 않은 문자를 자바 스크립트로 검사합니다.

다음과 같지만 제대로 작동하지 않습니다.

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에서 공백을 제거하고이 제대로 작동하려면 나타납니다

내가 .test 모두 .matches을 시도하고있다 (I 확인하는 경고 상자를 사용),하지만 어느 날 위해 일하는 것 같다!

아무도 내가 뭘 잘못하고 있는지 알아?

+0

추가 + $ 그것은 .replace''보다 일치하는 항목이 발견 된 경우 부울을 반환'.test'를 사용하는 것이 훨씬 간단 말 – Rishabh

답변

0

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

에 정규식을 변경하고 .match 사용

(). .matches()는 문자열 정규 표현식과 일치하지 않습니다.

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

.replace는 OP 만 사용하여 name 문자열 사이의 공백을 제거하는 데 사용됩니다. 즉, john doe가 johndoe – Deep

+0

으로 변경됩니다. – user3600952