2017-03-09 161 views
2

所以我有一個表單驗證名稱,幾驗證的是:驗證名稱

  • 名稱必須是5-50個字符
  • 名稱必須驗證口音=áéíóúÁÉÍÓÚ
  • 名稱必須驗證空間

我試圖用一個正則表達式是這樣的:

/^(?=.{5,50}$)\p{L}*(?: \p{L}+)*?/; 

但JavaScript並不允許Unicode表達式,我不能使用的插件,XRegExp,也是我曾嘗試:

/^[a-z\u00E0-\u00FC]+$/i 

/^[A-Za-z-áéíóú]+$/ 

任何幫助嗎?

謝謝您的閱讀:)

+0

5-50個字符或5-80個字符? –

+0

謝謝!讓我糾正它:) –

+1

你可以提供一個'/^[a-z \ u00E0- \ u00FC] + $/i'給出錯誤結果的情況嗎?我假設你真的想要'/^[a-z \ u00E0- \ u00FC] {5,50} $/i'來滿足你的其他要求 - 是唯一的問題嗎?或者是範圍'\ u00E0- \ u00FC'包含一些你不想要的字符的問題? (如果是這樣,你只是尋找重音字符的具體unicode值?) – apsillers

回答

2

您可以使用下面的正則表達式

[a-z \u00E0-\u00FC]{5,50} 

看到regex demo

的JavaScript

var names = ['áéíóúÁÉÍÓÚ', 'adádÚ', 'abcd', 'de fg']; 
 
names.forEach(function(e) { 
 
    var valid = 'Validating "' + e + '"... | ' + /[a-z \u00E0-\u00FC]{5,50}/i.test(e); 
 
    console.log(valid); 
 
});

+0

這工作!只是一個小問題,我可以添加什麼來驗證諸如josé和pepe這樣的簡單名稱,而最終沒有空格? –

+0

如果您看到當您測試'abcd'時,它會顯示爲false。 –

+0

@CarmenAmaro它的bcoz'abcd'不是5個字符。你想匹配像「卡門·何塞」或只是「喬斯」的名字? – m87