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 から空白を削除しましたが、正しく動作しているように見えます (アラート ボックスを使用して確認しました)。

.matches と .test の両方を試しましたが、どちらもうまくいかないようです!

私は何を間違っていますか?

4

1 に答える 1

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()">

于 2017-01-12T12:14:17.577 に答える