2017-04-03 5 views
-1

PHP에서 preg_replace가 작동했지만 JavaScript 코드로 이동해야만 작동하지 않습니다. 나는이 주제에 여기에 검색 한, 그러나 나를 위해 일하는 해결책을 발견하지 않았습니다 ... 내 PHP는 모습 :javascript의 PHP preg_replace

preg_replace('/^\d+_/', '', $docTypes); 

그리고 지금, 내 JS는 var documentTypesobject이며, 중요한 것은, 다음과 같습니다

var documentTypesObj = {}; 
    var counter = 0; 
    {foreach $documentTypes as $key =>$value} 
    documentTypesObj[counter + '_' + {$key}] = {$value}; 
    counter++; 
    {/foreach} 

    var documentTypes = documentTypesObj; 

    documentTypes = documentTypes.map(d => { return d.replace(/^\d+_/g, "")}); 

    console.log(documentTypes); 

내부 var documentTypes은 접두사가있는 값으로, 제거해야합니다. 값은 다음과 같습니다.

0_xxxx 
1_xxxx 
2_xxxx 

감사합니다.

+0

마지막에'/'를 두 배로 만들었 으면'/^\ d + _/g'이어야합니다. –

+2

^^^ 및'documentTypes = documentTypes.replace (/^\ d + _ /, '');'값을 업데이트하고'g' 플래그가 필요하지 않도록 변수에 다시 할당해야합니다. – Tushar

+0

@ 튜샤 코드 편집 – hstur

답변

1

가 배열의 경우

var docs = ["0_xxx", "1_yyy", "2_zzzz"]; 
docs = docs.map(d => { return d.replace(/^\d+_/g, "")}); 
+0

실제로 제가 해결책을 사용하면 console.log에 docs.map이 함수가 아닙니다 .. (하지만 그게 내 시도에 대해서도 말해 줬어. 'forEach()'와 다른 함수들을 사용하기 위해서 ... – hstur

2
<script type="text/javascript"> 
    documentTypes = '0_xxxx'; 
    documentTypes = documentTypes.replace(/^\d+_/, ''); 
    document.write(documentTypes); 
</script>  
+2

설명이 없습니까? 코드 응답 만 향후 독자에게 도움이되지 않습니다. 대답을 편집하고 설명을 추가하십시오. – Tushar

+0

좋아요 ........... –

0

확실하지 않은 사용자의 입력 문자열에 사용하면 줄 바꿈이 있거나 문자열의 반환을 수행 렸기 때문에, 문제가있을 수 있습니다. 그렇다면 당신이 찾고있는 해결책은 다음과 같을 것입니다 :

var documentTypes = '0_xxxx\n\ 
1_xxxx\n\ 
2_xxxx'; 

documentTypes = documentTypes.replace(/(^\d+_|[\r\n]+\d+_)/gm,'');