Javascript 如何在自动链接标记脚本中正则化土耳其语字母
我有以下代码: 用户Javascript 如何在自动链接标记脚本中正则化土耳其语字母,javascript,jquery,regex,sanitize,Javascript,Jquery,Regex,Sanitize,我有以下代码: 用户 @john -> <a href="homeurl/profile/john">@john</a> #değilmi->ğilmi 如何检测土耳其语字母以及如何替换url的拉丁语版本,例如 您可以追随 并将土耳其语字符转换为ASCII字母,如下所示: var makeSortString = (function() { var translate_re = /[ığüşöçİĞÜŞÖÇ]/g; var translate = {
@john -> <a href="homeurl/profile/john">@john</a>
#değilmi->ğilmi
如何检测土耳其语字母以及如何替换url的拉丁语版本,例如
您可以追随
并将土耳其语字符转换为ASCII字母,如下所示:
var makeSortString = (function() {
var translate_re = /[ığüşöçİĞÜŞÖÇ]/g;
var translate = {
"ı": "i", "ğ": "g", "ü": "u", "ş": "s", "ö": "o", "ç": "c",
"İ": "I", "Ğ": "G", "Ü": "U", "Ş": "S", "Ö": "o", "Ç": "C",
};
return function(s) {
return ( s.replace(translate_re, function(match) {
return translate[match];
}) );
}
})();
但是,如果您可以使用ECMAScript 6,它将引入方法String.prototype.normalize()
,该方法将为您处理Unicode规范化。您可以将其与公共JS的polyfill一起使用
console.log('ığüşöçİĞÜŞÖÇ'.normalize('NFKD'));
对于slug,我使用以下脚本:
var string_to_slug = function (str)
{
str = str.replace(/^\s+|\s+$/g, ''); // trim
str = str.toLowerCase();
// remove accents, swap ñ for n, etc
var from = "àáäâèéëêìíïîıòóöôùúüûñçşğ·/_,:;";
var to = "aaaaeeeeiiiiioooouuuuncsg------";
for (var i=0, l=from.length ; i<l ; i++)
{
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
.replace(/\s+/g, '-') // collapse whitespace and replace by -
.replace(/-+/g, '-'); // collapse dashes
return str;
}
var string\u to\u slug=函数(str)
{
str=str.replace(//^\s+|\s+$/g',);//修剪
str=str.toLowerCase();
//去除重音符号,用ñ替换n等
var from=“ááäèèèèèèèèèèèèèèèèèèè;
var to=“aaaaeeeeiiiiooouuncsg------”;
对于(var i=0,l=from.length;我希望您@wp78de您的脚本工作。但是现在就开始解决slug问题。我正在解决这个正则表达式:[a-z0-9ğşşşşşŠŠŠŠŠŠŠŠŠŠŠ
var makeSortString = (function() {
var translate_re = /[ığüşöçİĞÜŞÖÇ]/g;
var translate = {
"ı": "i", "ğ": "g", "ü": "u", "ş": "s", "ö": "o", "ç": "c",
"İ": "I", "Ğ": "G", "Ü": "U", "Ş": "S", "Ö": "o", "Ç": "C",
};
return function(s) {
return ( s.replace(translate_re, function(match) {
return translate[match];
}) );
}
})();
console.log('ığüşöçİĞÜŞÖÇ'.normalize('NFKD'));
var string_to_slug = function (str)
{
str = str.replace(/^\s+|\s+$/g, ''); // trim
str = str.toLowerCase();
// remove accents, swap ñ for n, etc
var from = "àáäâèéëêìíïîıòóöôùúüûñçşğ·/_,:;";
var to = "aaaaeeeeiiiiioooouuuuncsg------";
for (var i=0, l=from.length ; i<l ; i++)
{
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
.replace(/\s+/g, '-') // collapse whitespace and replace by -
.replace(/-+/g, '-'); // collapse dashes
return str;
}