accent insensitive regex

后端 未结 2 1212
刺人心
刺人心 2020-12-19 03:24

My code:

jQuery.fn.extend({
 highlight: function(search){
  var regex = new RegExp(\'(<[^>]*>)|(\'+ search.replace(/[.+]i/,\"$0\") +\')\',\'ig\');

         


        
2条回答
  •  无人及你
    2020-12-19 03:45

    You need to come up with a table of alternative characters and dynamically generate a regex based on that. For example:

    var alt = {
      'c': '[cCç]',
      'a': '[aAãÃá]',
      /* etc. */
    };
    
    highlight: function (search) {
      var pattern = '';
      for (var i = 0; i < search.length; i++) {
        var ch = search[i];
        if (alt.hasOwnProperty(ch))
          pattern += alt[ch];
        else
          pattern += ch;
      }
    
      ...
    }
    

    Then for search = 'cao' this will generate a pattern [cCç][aAãÃá]o.

提交回复
热议问题