我想找到一个正则表达式模式,它匹配仅在此子集中包含字符的字符串:所有非重音的拉丁字母,空格和这些特殊字符:[ÀÁÂüÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ]。
例如:
TEST RESULT
Rui Sérgio true
Anónio Elvs Rodri true
a0ksjs jjss false
John's Alive false
João Caça true
/^[ 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
你想要的模式是
'^[A-Za-zÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ ]+$'
^
匹配字符串的开头。 []
匹配括号中的任何字符或范围A-Za-z
匹配所有非重音字符,然后您可以选择您指定的字符,最后是空格。 +
匹配前一个字符类中的一个或多个(在[]
中),$
匹配字符串的结尾。因此字符串只能包含常规拉丁字符,您指定的重音字符或空格。
所有关于名称的常见警告都会将John O'Rourke
视为假。
在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