2017-04-03 78 views
-1

我曾在PHP工作preg_replace,但我不得不將它移動到JavaScript代碼,它不起作用。我已經在這裏搜查的話題,但還沒有找到工作的解決方案,我......我 PHP看起來像:PHP preg_replace in javascript

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); 

Inside var documentTypes是帶有前綴的值,我必須刪除它。數值例如:

0_xxxx 
1_xxxx 
2_xxxx 

謝謝您的建議!

+0

你在最後加了一個'/',它必須是'/^\ d + _/g'。 –

+2

^^^和'documentTypes = documentTypes.replace(/^\ d + _ /,'');'你必須把它賦值給變量來更新它的值並且不需要'g'標誌。 – Tushar

+0

@Tushar代碼編輯 – 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

不知道在你輸入的字符串,問題可能是becouse你有換行或攜帶的字符串返回。如果是這樣,你正在尋找的解決方案可能是這樣的:

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

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