Прямо сейчас ваше регулярное выражение соответствует str
, за которым следует один символ из диапазона i
- один i
, что означает, что оно будет соответствовать stri
.Чтобы сопоставить переменную i
, попробуйте следующее:
var str = "helloWorld";
var regResult;
for (var i = 0; i < str.length; i++) {
regResult = str.match(new RegExp('str' + i, 'g')); //gives null
};
Здесь мы создаем регулярное выражение, шаблон которого содержит текущее значение переменной i
.Например, если i
равно 4, то регулярное выражение будет построено так, как если бы вы просто указали /str4/g
на str.match
.
РЕДАКТИРОВАТЬ
Чтобы отразить изменения, внесенные ввопрос, мое новое предлагаемое решение заключается в следующем:
var str = "helloWorld";
var regResult;
for (var i = 0; i < str.length; i++) {
regResult = str.match(new RegExp(str[i], 'g')); //gives null
};
Этот код отличается от приведенного выше кода тем, что он читает значение i
из str
.Например, если i
равно 4 и str[4] = "h"
, регулярное выражение будет сконструировано так, как если бы вы просто указали значение от str[4]
до str.match
: str.match(/h/g)
.