Javascript RegExp 객체에는 기본 제공 방법이 없습니다. 표현을 바꾸지 않고. 가장 가까운 값은 source
이며 전체 표현식을 문자열로 반환합니다. 당신이 표현 | OR
의 일련의 것 알고 있기 때문에, 당신은 그룹을 캡처 할 수
그룹이 일치하는 파악하고, 해당 그룹의 내용을 알아 .source
와 그 결합하기 :
var exp = /(horse)|(caMel)|(TORTOISe)/i;
var result = exp.exec("Camel");
var match = function(){
for(var i = 1; i < result.length; i++){
if(result[i]){
return exp.source.match(new RegExp('(?:[^(]*\\((?!\\?\\:)){' + i + '}([^)]*)'))[1];
}
}
}();
// match == caMel
을 RegExp 엔진을 처음부터 작성하는 것은 매우 쉽지만 (다소 실용적 임에도 불구하고) 기술적으로 기능을 추가 할 수는 있습니다. 전체 엔진이 런타임에 해석되어야하므로 실제 RegExp 객체를 사용하는 것보다 훨씬 느립니다. 그러나 정규 표현식에 대해 표현식의 일치 부분을 정확하게 반환 할 수 있으며 일련의 | OR
으로 제한되지는 않습니다.
var matches = {
'horse': 'horse',
'camel': 'caMel',
'tortoise': 'TORTOISe'
};
// Test "Camel"
matches['Camel'.toLowerCase()]; // "caMel"
명확하게 말하면 일치하는 문자열이 아닌 정규 표현식을 반환하려고합니까? – Mathletics
해당 예제를 기반으로 일치하는 항목을 반환했습니다. 당신은 explicitly 텍스트 ** 사례 ** 무시하고 ** 낙타 ** 일치하는 정규식 말했다. 그래서, 그것은 문자열 입력을 반환했습니다. –