如何在JavaScript中过滤掉特殊字符

时间:2018-07-25 12:55:27

标签: jquery datatables

我有这个javascript(下面的JSFiddle):

$(document).ready(function() {
var table = $('#example').DataTable();

$('input[type="checkbox"]').on('change', function() {
  console.log($(this).attr("id"), this.checked)
  var choosedString = "";
  if ($('#A').prop('checked')) {
    choosedString = "A"
  }
  if ($('#Aplus').prop('checked')) {
  choosedString += choosedString.length > 0 ? "|" : "";
  choosedString += "A\\+"
  }

console.log(table)
table.column(3).search(choosedString,  true, false).draw();

  });

});

这里是JSFIDDLE

我需要通过2个复选框从表格中选择“ A”和/或“ A +”值。我想出了如何选择“ A +”,但是当我尝试选择“ A”时,选择中还包括了A +。如何滤除特殊字符?谢谢。

3 个答案:

答案 0 :(得分:2)

您已经在这里使用search方法的正则表达式模式-但问题在于,A作为“正则表达式”当然仍然匹配包含{{ 1}} 任何地方,并且不再对其进行进一步限制。

如果在开始和结束时使用A^ 锚定这些表达式,那么您应该能够得到想要的:

$

https://jsfiddle.net/10uhwapv/102/

答案 1 :(得分:2)

您可以使用^$锚点来匹配字符串的开头和结尾:

$(document).ready(function() {
  var table = $('#example').DataTable();

  $('input[type="checkbox"]').on('change', function() {
    console.log($(this).attr("id"), this.checked)
    var choosedString = "";
    if ($('#A').prop('checked')) {
      choosedString = "^A$"; // Modified here
    }
    if ($('#Aplus').prop('checked')) {
      choosedString += choosedString.length > 0 ? "|" : "";
      choosedString += "A\\+"
    }
    console.log(table)
    table.column(3).search(choosedString,  true, false).draw();

  });

});

正在工作的小提琴(仅使用$):https://jsfiddle.net/10uhwapv/96/

希望有帮助。

答案 2 :(得分:1)

您需要更改此行

table.column(3).search(choosedString,  true, false).draw();

table.column(3).search("^" + choosedString + "$", true, false).draw();

然后您可以按完全匹配A或A +过滤表格。您可以查看演示here