无法将字符串与带有空格的 jQuery 匹配



我正在尝试匹配另一个字符串中的字符串,但我无法做到:

我想根据我

正在键入的另一个字符串匹配一个字符串,但是当我"询问"阿斯顿马丁"是否以"阿斯顿"开头时,我得到"false"。

编辑:

请注意,过滤器是"键入时",在这种情况下,我在"阿斯顿"的末尾有一个空格。

重要提示:

根据@mplungjan答案,我遇到了另一个关于过滤器字符串末尾空格的问题。测试它,我得到了 charCode 160,所以我使用的解决方案是将替换应用于两个字符串:

.replace(String.fromCharCode(160), ' ')

var value = $("#brand").text();
var brand = $("#filter").val();
alert(brand.substr(0, value.length).toUpperCase() == value.toUpperCase());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">

使用 indexOf == 0 将显示以品牌开头的字符串,包括值中的空格!

var brand = $("#brand").text();
var value = $("#filter").val();
console.log(">"+brand+"<",">"+value+"<",brand.toUpperCase().indexOf(value.toUpperCase())==0);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">

Onkeyup:

$("#filter").on("keyup", function() {
  var brand = $("#brand").text();
  brand = brand?brand.toUpperCase():"";
  var value = $("#filter").val();
  value = value?value.toUpperCase():"";
  if (brand && value) {
    console.log(brand, value,brand.indexOf(value) == 0); // same as regex /^word /
  }
  else {
    console.log("Something is empty");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">

这将起作用,并且不要忘记输入的值中有一个空格?

var value = $("#brand").text();
var brand = $("#filter").val();
alert(!!value.toUpperCase().match(brand.toUpperCase()));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="brand">Aston Martin</div>
<input id="filter" value="Aston ">

你可以这样尝试:

x = "Aston Martin";
if (x.match("Aston")) {
     // Code
}

更新1:

如果您希望字符串以特定单词开头,并且希望在末尾匹配空格,则可以这样做:

if(x.match(/^Aston /)) {
}

请使用这个:

value.toUpperCase().indexOf(brand.toUpperCase())>=0?true:false

最新更新