我想找到一个正则表达式模式,该模式匹配仅在此子集中包含字符的字符串:所有不带重音的拉丁字母,空格和以下特殊字符:
例如:
TEST RESULT
Rui Sérgio true
Anónio Elvs Rodri true
a0ksjs jjss false
John's Alive false
João Caça true
答案 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