我需要将重音字符视为与非重音对应字符相同。这是我的代码:string.search()忽略重音字符?
var re = new RegExp(string, 'i');
if(target.search(re) == 0) { }
目前,它忽略了人物的情况下,我怎么还,如果字符是重音或者不能忽视?
我需要将重音字符视为与非重音对应字符相同。这是我的代码:string.search()忽略重音字符?
var re = new RegExp(string, 'i');
if(target.search(re) == 0) { }
目前,它忽略了人物的情况下,我怎么还,如果字符是重音或者不能忽视?
我认为你必须先删除口音,然后做你的RegExp。
您可以使用此功能taht我发现here:
function stripVowelAccent(str)
{
var rExps=[
{re:/[\xC0-\xC6]/g, ch:'A'},
{re:/[\xE0-\xE6]/g, ch:'a'},
{re:/[\xC8-\xCB]/g, ch:'E'},
{re:/[\xE8-\xEB]/g, ch:'e'},
{re:/[\xCC-\xCF]/g, ch:'I'},
{re:/[\xEC-\xEF]/g, ch:'i'},
{re:/[\xD2-\xD6]/g, ch:'O'},
{re:/[\xF2-\xF6]/g, ch:'o'},
{re:/[\xD9-\xDC]/g, ch:'U'},
{re:/[\xF9-\xFC]/g, ch:'u'},
{re:/[\xD1]/g, ch:'N'},
{re:/[\xF1]/g, ch:'n'} ];
for(var i=0, len=rExps.length; i<len; i++)
str=str.replace(rExps[i].re, rExps[i].ch);
return str;
}
这是一个很弱的解决方案,可能会导致许多重音字符失败,这可能是您无法预料的。请参阅[删除字符串中的重音](http://stackoverflow.com/questions/990904/javascript-remove-accents-in-strings)了解如何正确处理重音。 –
使用该库semplice
http://semplicewebsites.com/removing-accents-javascript
var latin_map = {
'Á': 'A', // LATIN CAPITAL LETTER A WITH ACUTE
'Ă': 'A', // LATIN CAPITAL LETTER A WITH BREVE
...
'ᵥ': 'v', // LATIN SUBSCRIPT SMALL LETTER V
'ₓ': 'x', // LATIN SUBSCRIPT SMALL LETTER X
};
String.prototype.latinise = function() {
return this.replace(/[^A-Za-z0-9]/g, function(x) { return latin_map[x] || x; })
};
先尝试删除字符串中的口音,然后通过一个正则表达式。 http://stackoverflow.com/questions/990904/javascript-remove-accents-in-strings。在任何情况下都应该有效。这个问题或类似问题已被多次询问。 – elclanrs