2017-03-15 95 views
0

我想要創建一個正則表達式,我可以將它傳遞給ng-pattern,以便輸入只能在字符串從a到z只有大寫/小寫拉丁字母,有波浪號的n和元音時有效急性口音;以及點。我想出了我認爲是解決方案,但angularjs一直告訴我的開發人員工具,我的字符串無效時字符串是:正則表達式很奇怪

  • N,N-
  • A,E,I,O, ú - 也用大寫字母
  • 一個點後跟一個點,後跟一個空格 - 不是我真的對此感興趣,但我認爲它應該是有效的。

這是我有:"[A-Za-z\.\s\U+00C1\U+00C9\U+00CD\U+00D1\U+00D3\U+00DA\U+00E1\U+00E9\U+00ED\U+00F1\U+00F3\U+00FA]+"

我在做什麼錯?

P.S.我嘗試了[Jun|Jul|Aug]示例中維基中提及的|運算符,但它的行爲更加怪異。

回答

1

此正則表達式應該爲你的工作需要:

[A-Za-z\.\s\u00C1\u00C9\u00CD\u00D1\u00D3\u00DA\u00E1\u00E9\u00ED\u00F1\u00F3\u00FA]+ 
+0

我試了一下,它是不工作... – Edward

+0

這適用於所有你這個網頁上所提供的人物。試試http://www.regexpal.com/。 – StephenRios

+0

最後加號表示正在工作。我注意到你寫的是\ u00C1而不是\ U + 00C1,如果你願意的話,我可以使用a嗎? – Edward

1

您應該使用不區分大小寫的正則表達式(在i標誌),並與\xHH而不是\u+00HH逃不過你的特殊字符。

var regex = /^[a-z.\s\xC1\xC9\xCD\xD1\xD3\xDA\xE1\xE9\xED\xF1\xF3\xFA]+$/i 
 

 
var valid = 'ñ Ñ á e í ó ú'.split(' ') 
 
var invalid = '0 ; Ć'.split(' ') 
 

 
console.log('Valid:') 
 
valid.forEach(function (e) { 
 
    console.log(regex.test(e)) //=> true 
 
}) 
 

 
console.log('Invalid:') 
 
invalid.forEach(function (e) { 
 
    console.log(regex.test(e)) //=> false 
 
})
.as-console-wrapper { min-height: 100vh; }

+1

這也適用。 – StephenRios