2017-01-12 63 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和。測試,但也似乎爲我工作!

有人知道我在做什麼錯嗎?

+0

添加+末 – 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

$它更易於使用'.test'如果找到匹配,返回一個布爾值,不是'.replace'。 – Stilltorik

+0

.replace用於刪除名稱字符串之間的空白僅由OP,即約翰doe將更改爲johndoe – Deep

+0

深,工作,謝謝! – user3600952