簡體   English   中英

正則表達式很奇怪

[英]Regex acts weird

我想創建一個可以傳遞給ng-pattern的正則表達式,以便僅當字符串中只有從a到z的大寫/小寫拉丁字母,帶有波浪號的n和帶有尖音的元音時,輸入才有效。 以及點。 我提出了我認為是解決方案的方法,但是angularjs不斷在開發人員工具中告訴我,當string為:

  • ñ,Ñ
  • á,e,í,ó,ú—也是大寫
  • 一個點,然后是一個點,再加上一個空格-不是我真的很想擁有它,但是我認為它應該是有效的。

這就是我得到的: "[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]+"

我究竟做錯了什么?

PS我嘗試了| Wiki在[Jun|Jul|Aug]示例中提到了運算符,但它的作用甚至更怪異。

此正則表達式應滿足您的需求:

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

您應該使用不區分大小寫的正則表達式( i標志),並使用\\xHH而不是\\u+00HH來轉義特殊字符。

 var regex = /^[az.\\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; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM