消毒可搜索的字符串JS

时间:2015-08-05 12:43:26

标签: javascript jquery

尝试搜索具有额外字符的字符串,在拍摄查找功能之前应删除该字符串。

E.g。 搜索字符串是“John”,而我希望返回所有可能的变体,其中包含“^”(J ^ ohn,Jo ^ hn,Joh ^ n,^ John,John ^)作为正确的变体。

JS部分:

$(document).ready(function()
{
    $('#search').keyup(function()
    {
        searchTable($(this).val());
    });
});

function searchTable(inputVal)
{
    var table = $('#tblData');
    table.find('tr').each(function(index, row)
    {
        var allCells = $(row).find('td');
        if(allCells.length > 0)
    {
        var found = false;
        allCells.each(function(index, td)
        {
            var regExp = new RegExp(inputVal, 'i');
            if(regExp.test($(td).text()))
            {
                found = true;
                return false;
            }
        });
        if(found == true)$(row).show();else $(row).hide();
    }
});
}

HTML部分:

    <div class="tables">
<p>
    <label for="search">
        <strong>Enter name</strong>
    </label>
    <input type="text" id="search"/>
    <label></label>
</p>
<table id="tblData" class="target table table-bordered table-striped">
   <tr>
       <th>First Name</th>
       <th>Last Name</th>
       <th>number</th>
       <th>letters</th>
       <th>Gender</th>
       <th>Company</th>
   </tr>
   <tr>
       <td>Jo^hn</td>
       <td>Lenno^n</td>
       <td>151</td>
       <td>sf</td>
       <td>Male</td>
       <td>SMS Global (Technologies)</td>
   </tr>
   <tr>
       <td>Pau^l</td>
       <td>McC^artney</td>
       <td>753</td>
       <td>tj</td>
       <td>Male</td>
       <td>SMS Global (Services)</td>
   </tr>
   <tr>
       <td>George</td>
       <td>Harrison</td>
       <td>24</td>
       <td>ge</td>
       <td>Female</td>
       <td>SMS AIM Technologies</td>
   </tr>
   <tr>
       <td>Ringo</td>
       <td>Starr</td>
       <td>26</td>
       <td>hg</td>
       <td>Female</td>
       <td>SMS Global (Help Desk)</td>
   </tr>
</table>

以下是示例:

JSFiddle

1 个答案:

答案 0 :(得分:0)

只需更换所有“^”,然后尝试将输入字符串与数据进行比较,如下所示。

var inputString="jOhn";
inputString=inputString.toLowerCase();
var text="jOH^n";
text=text.toLowerCase();
text=text.replace("^","");
(text===inputString)?true:false;

如果您想使用文字相似性,那么您可以使用任何文字相似度算法,例如Levenshtein string matching算法,以便快速解决此库:fuzzyset