Ответ 1
Передайте модификатор i
в качестве второго аргумента:
new RegExp('^' + query, 'i');
Посмотрите документацию для получения дополнительной информации.
Мне нужно проверить, начинается ли слово с определенной подстроки, игнорируя различия в case. Я делаю эту проверку, используя следующий шаблон поиска в регулярном выражении, но это не помогает, когда разница в случае между строками.
мой чувствительный к делу способ:
var searchPattern = new RegExp('^' + query);
if (searchPattern.test(stringToCheck)) {}
Передайте модификатор i
в качестве второго аргумента:
new RegExp('^' + query, 'i');
Посмотрите документацию для получения дополнительной информации.
Вам вообще не нужно регулярное выражение, просто сравните строки:
if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase())
Демо: http://jsfiddle.net/Guffa/AMD7V/
Это также относится к случаям, когда вам нужно было бы избежать символов, чтобы заставить решение RegExp работать, например, если query="4*5?"
, которое всегда будет соответствовать всем остальным.
На этой странице вы можете увидеть, что модификаторы могут быть добавлены в качестве второго параметра. В вашем случае вы ищете "i" (нечувствительность к Canse)
//Syntax
var patt=new RegExp(pattern,modifiers);
//or more simply:
var patt=/pattern/modifiers;
Я думаю, что все предыдущие ответы верны, вот еще один пример, похожий на SERPRO, но разница в том, что новый конструктор отсутствует: Обратите внимание: я игнорирую регистр, а ^ означает начало с.
var whatEverString = "My test String";
var pattern = /^my/i
var result = pattern.test(whatEverString);
if (result === true) {
console.log(pattern, "pattern did match !");
} else {
console.log(pattern, " pattern did NOT match");
}
Вот jsfiddle, если вы хотите попробовать.