REGEX模式,使用扩展拉丁字母验证个人名称

时间:2019-04-16 16:44:24

标签: javascript jquery regex regex-lookarounds regex-group

我想找到一个正则表达式模式,该模式匹配仅在此子集中包含字符的字符串:所有不带重音的拉丁字母,空格和以下特殊字符:

例如:

TEST               RESULT
Rui Sérgio          true
Anónio Elvs Rodri   true
a0ksjs jjss         false
John's Alive        false
João Caça           true

2 个答案:

答案 0 :(得分:1)

/^[ a-zA-Z\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xE0-\xE5\xE7-\xEF\xF1-\xF6\xF8-\xFC\xFF]+$/gm

https://regex101.com/r/i1lwd2/1

或此

/^[a-zA-Z\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xE0-\xE5\xE7-\xEF\xF1-\xF6\xF8-\xFC\xFF](?:[ ]?[a-zA-Z\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xE0-\xE5\xE7-\xEF\xF1-\xF6\xF8-\xFC\xFF])*$/gm

https://regex101.com/r/m5ZGcC/1


Regex1:   ^[ a-zA-Z\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xE0-\xE5\xE7-\xEF\xF1-\xF6\xF8-\xFC\xFF]+$
Options:  < m >
Completed iterations:   50  /  50     ( x 1000 )
Matches found per iteration:   3
Elapsed Time:    1.05 s,   1048.52 ms,   1048522 µs
Matches per sec:   143,058


Regex2:   ^[a-zA-Z\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xE0-\xE5\xE7-\xEF\xF1-\xF6\xF8-\xFC\xFF](?:[ ]?[a-zA-Z\xC0-\xC5\xC7-\xCF\xD1-\xD6\xD8-\xDC\xE0-\xE5\xE7-\xEF\xF1-\xF6\xF8-\xFC\xFF])*$
Options:  < m >
Completed iterations:   50  /  50     ( x 1000 )
Matches found per iteration:   3
Elapsed Time:    0.94 s,   942.53 ms,   942535 µs
Matches per sec:   159,145

答案 1 :(得分:0)

您想要的图案是

'^[A-Za-zÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ ]+$'

^匹配字符串的开头。 []匹配括号中的任何字符或范围A-Za-z匹配所有未重音的字符,然后您可以选择要指定的字符,最后带有空格。 +匹配一个或多个先前的字符类(在[]中),而$匹配字符串的结尾。因此,字符串只能包含常规拉丁字符,您指定的重音字符或空格。

所有常见的关于名称的警告,例如它将John O'Rourke传递为false。

在Javascript中,您将使用类似以下内容:

var pattern  = /^[A-Za-zÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ ]+$/;
var names = [
  'Rui Sérgio',
  'Anónio Elvs Rodri',
  'a0ksjs jjss',
  "John's Alve",
  'João Caça'
  ]

for (var i = 0, len = names.length; i < len; i++) {
  console.log(names[i])
  console.log(pattern.test(names[i]));
}

输出:

'Rui Sérgio'
true
'Anónio Elvs Rodri'
true
'a0ksjs jjss'
false
'John's Alve'
false
'João Caça'
true