JavaScript奇怪的替换

JavaScript奇怪的替换,javascript,Javascript,我正在做一个简单的项目,生成Facebook BBCode(或类似的东西)的图片,你可以在聊天时使用 以下是我的完整代码: <html> <head> </head> <body> <script type="text/javascript"> function gear() { var textArea = document.getElementById("id"); var insertedText = theForm.theTex

我正在做一个简单的项目,生成Facebook BBCode(或类似的东西)的图片,你可以在聊天时使用

以下是我的完整代码:

<html>
<head>
</head>
<body>
<script type="text/javascript">
function gear()
{
var textArea = document.getElementById("id");
var insertedText = theForm.theText.value;
var charChanger = insertedText.replace(/a/ig, "[[f9.cha]] ").replace(/b/gi, "[[f9.chb]] ").replace(/c/gi, "[[f9.chc]] ").replace(/d/gi, "[[f9.chd]] ").replace(/e/gi, "[[f9.che]] ").replace(/f/gi, "[[f9.chf]] ").replace(/g/gi, "[[f9.chg]] ").replace(/h/gi, "[[f9.chh]] ").replace(/i/gi, "[[f9.chi]] ").replace(/j/gi, "[[f9.chj]] ").replace(/k/gi, "[[f9.chk]] ").replace(/l/gi, "[[f9.chl]] ").replace(/m/gi, "[[f9.chm]] ").replace(/n/gi, "[[f9.chn]] ").replace(/o/gi, "[[f9.cho]] ").replace(/p/gi, "[[f9.chp]] ").replace(/q/gi, "[[f9.chq]] ").replace(/r/gi, "[[f9.chr]] ").replace(/s/gi, "[[f9.chs]] ").replace(/t/gi, "[[f9.cht]] ").replace(/u/gi, "[[f9.chu]] ").replace(/v/gi, "[[f9.chv]] ").replace(/w/gi, "[[f9.chw]] ").replace(/x/gi, "[[f9.chx]] ").replace(/y/gi, "[[f9.chy]] ").replace(/z/gi, "[[f9.chz]] ");

textArea.innerHTML = charChanger;
}
</script>
<div align="center"><form name="theForm">
<textarea rows="5" name="theText" cols="120" onkeyup="gear();"></textarea>
<br>
<textarea readonly id="id" rows="20" cols="120"></textarea>
</form></div>
</body>
</html>

功能齿轮()
{
var textArea=document.getElementById(“id”);
var insertedText=form.theText.value;
替换(/b/b/gi,[[f9.chb.chb][[f9.chb][[f9.chb[f9.chb]]号)替换。替换(/c/g/gi,[[f9.chc[f9.chc[[f9.chc[f9.chd[f9.chd[f9.cha]]]号)替换(/a/a/a/ig,“[FB/gi,[[[f9.b/gi[f9.chb[f9.chb][[f9.chb][[f9.chb.chb][[f9.chb]]]]]]]]]]]]]]号号.替换。替换。替换(/b/b/b/b/b/b/b/b/b/b/b/b/b/gi,[[[[[[[[[[[[[f9.chb[f9.chb][["[[f9.chk.f9.chk]]))。替换。替换(/l/gi,“[f9.chl.chl]]”.替换(/m/gi,“[f9.CH9.chk.f9.chk]))))。替换(/l/l/gi,“[f9.chk.chk]]替换。替换。替换。替换(/m/m/gi,“[[f9.gi,[[f9.chm.chm.[[[f9.chm.chm]]]]]]].8.替换。替换。替换。替换。替换。替换。替换。替换。替换。替换(/m/m/m/m/m/GIG,“[[[[[[[[[f9.G,”[f9.G,[[f9.CH9.CH9.chm.CH9.chm.[f9.chm][[f9.chm.chm(/v/gi,“[[f9.chv]]”).replace(/w/gi,[[f9.chw]])。replace(/x/gi,[[f9.chx]])。replace(/y/gi,[[f9.chy]])。replace(/z/gi,[[f9.chz]]);
textArea.innerHTML=charChanger;
}

有两个
s。第一个用字符串填充,第二个用替换值替换字符串

该函数在keyup事件后开始工作。它应该可以正常工作,但它会返回一些奇怪的替换,从一个字符到g(其余的都可以工作)。
那么,是否有修复方法?或者其他方法,比如使用阵列替换?

您不需要100次替换,只需一次即可

insertedText.replace(/([a-z])/gi, '[[f9.ch$1]]')

您正在将
a
中的字符替换为
g
,因此我希望得到这样的结果。您能解释一下代码实际应该做什么吗?问题解决了!我的编码总是乱七八糟的,正则表达式?太酷了!谢谢@elclanrs