簡體   English   中英

JavaScript中的正則表達式和數組

[英]Regular expression and array in JavaScript

我嘗試創建自己的預覽功能以在鍵入時顯示文本區域的內容(我知道這在jQuery( .html($(this).val() )中就可以了,但是請閱讀更多內容以了解原因我對此使用JavaScript。)效果很好,但是當我添加正則表達式和數組以將<b>格式設置為[b]我被卡住了。我的代碼如下:

function nl2br() {
    var newrows = /\n/g;
    var bold = /\[b\](.+?)\[\/b]/gi;

    find = new Array(bold, newrows);
    replace = new Array('<b>$1</b>', '<br>');

    var messageValue = document.getElementById('preview').value.replace(find, replace);
    document.getElementById('test').innerHTML = messageValue;
}

如果我刪除數組中的一行(例如newrows ),那么一切都會像newrows一樣工作,但是不能同時使用這兩種方式,這就是問題所在。 我是JavaScript的新手,很好地問您是否可以看到問題所在?

replace [MDN]不接受陣列作為針和替換。 在這種情況下,將數組轉換為字符串。 如果數組只有一個元素,則不會有什么區別,因為["a"]的字符串表示形式只是"a" 但是,如果您具有多個元素,例如["a", "b"] ,則它將變為"a, b"

因此解決方案是多次應用replace 您可以通過鏈接來做到這一點:

str = str.replace(a, b).replace(c, d).repl....

或者,如果您想使其更易於維護,則可以將針頭和備用針頭排列成陣列並在其上循環。 這看起來像

var patterns = [
    [/\n/g, '<br>'],
    [/\[b\](.+?)\[\/b]/gi, '<b>$1</b>']
];

for(var i = 0; i < patterns.length; i++) {
    str = str.replace(patterns[i][0], patterns[i][2]);
}

為了學習JavaScript,我建議使用MDN JavaScript Guide

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM