![](/img/trans.png)
[英]Extracting an array of integers using a regular expression in 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.