다음은 정규식 무료 버전입니다.
function indexes(source, find) {
if (!source) {
return [];
}
// if find is empty string return all indexes.
if (!find) {
// or shorter arrow function:
// return source.split('').map((_,i) => i);
return source.split('').map(function(_, i) { return i; });
}
var result = [];
for (i = 0; i < source.length; ++i) {
// If you want to search case insensitive use
// if (source.substring(i, i + find.length).toLowerCase() == find) {
if (source.substring(i, i + find.length) == find) {
result.push(i);
}
}
return result;
}
indexes("I learned to play the Ukulele in Lebanon.", "le")
편집 : 'aaaa'및 'aa'와 같은 문자열을 일치시켜 [0, 2]를 찾으려면이 버전을 사용하십시오.
function indexes(source, find) {
if (!source) {
return [];
}
if (!find) {
return source.split('').map(function(_, i) { return i; });
}
var result = [];
var i = 0;
while(i < source.length) {
if (source.substring(i, i + find.length) == find) {
result.push(i);
i += find.length;
} else {
i++;
}
}
return result;
}
le
변수 문자열이 여기에? 예를 들어new Regexp(str);
특수 문자를 사용 하는 경우에도 위험이 숨어$2.50
있습니다. 좀regex = new Regexp(dynamicstring.replace(/([\\.+*?\\[^\\]$(){}=!<>|:])/g, '\\$1'));
더 가까운 IMHO가 될 것입니다. js에 정규식 이스케이프 메커니즘이 내장되어 있는지 확실하지 않습니다.