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;
}