【发布时间】:2016-10-07 21:04:07
【问题描述】:
我有一个带有字符串属性的对象,我想使用不区分大小写的方式与多个用户输入进行比较。我的目标是将输入字符串与对象字符串匹配,以将关联值增加 1(如果匹配)。
var objArr = [
{"O": 0},
{"foo": 0},
{"faa": 0},
{"A": 0}
];
除了不区分大小写之外,一切都很顺利。我使用的 RegExp 方法只查找一个字母而不是整个单词。我可能没有使用正确的语法,但我在 google 上找不到解释 /i 标志和变量的结果。
我最接近的尝试是:
var re = new RegExp(b, "i"); //problem here
if (allinputs[i].value.match(re)) { //and here
此代码确实允许不区分大小写,但它不会查找整个对象属性字符串并停止查找字母。例如,键入“foo”将导致与“O”匹配,因为它包含字母“O”,并且属性“O”在“foo”之前。因此,键入“faa”匹配“faa”而不是“A”,因为“faa”在对象数组中位于“A”之前。我的对象中不存在的字符串(如“asfo”)仍将与“O”匹配,因为只有一个常见字母。
有没有办法使用 regExp /i flag 搜索 整个 不区分大小写的属性字符串?如果可能,我想避免使用 .toUpperCase() 或 .toLowerCase() 方法。
在这里提琴:https://jsfiddle.net/Lau1989/b39Luhcu/
感谢您的帮助
【问题讨论】:
标签: javascript regex