使用javascript替换字符串值并保留部分替换字符串

使用javascript替换字符串值并保留部分替换字符串,javascript,jquery,regex,replace,Javascript,Jquery,Regex,Replace,我有一个reach文本框,用户可以在其中设计html页面,我无法访问TextArea的事件键向上或键向下,因此我无法在运行时更改输入。用户输入数字,因此我将最终获得一个包含各种html标记的reachtext值,并且reachtext值中允许任何html标记,现在,我想将用户在文本中输入的任何数字更改为word,这意味着如果用户输入1,我希望它是单词(1),对于2,3,4。。等等,但同时我想保持html标记中的数字不变,以保持用户对他设计的reach文本所做的样式,例如,如果我有以下生成的htm

我有一个reach文本框,用户可以在其中设计html页面,我无法访问TextArea的事件键向上或键向下,因此我无法在运行时更改输入。用户输入数字,因此我将最终获得一个包含各种html标记的reachtext值,并且reachtext值中允许任何html标记,现在,我想将用户在文本中输入的任何数字更改为word,这意味着如果用户输入1,我希望它是单词(1),对于2,3,4。。等等,但同时我想保持html标记中的数字不变,以保持用户对他设计的reach文本所做的样式,例如,如果我有以下生成的html:

<h1>Title1: Hi iam first title</h1><h3>Title3 hi iam third title</h3>
<div style='width:23px'>iam a div with 23 pixels width</div>
如果我通过获取左边有“>”和“的字符串来应用前一个字符串的模式,那么可以使用jQuery方法来更新元素的innerText

//存储数字的字符串表示形式
var num=[未定义,'1','2','3'];
//迭代所有的````
$('h1,h3').text(函数(i,text){
//匹配1、2或3。正则表达式也可以写成“[123]”或“[1-3]`
返回文本。替换(/1 | 2 | 3/g,函数(编号){
return num[number];//替换为文本表示形式。
});
});


Title1Title3
您可以使用
RegExp
/(1 | 2 | 3)(?!>)/g
来匹配
1
2
,或者
3
如果字符后面没有
字符

var oldValue='Title1Title3';
var newValue=oldValue.replace(/(1 | 2 | 3)(?!>)/g,函数convertNumber(x){
开关(x){
案例“1”:
返回“一”;
打破
案例“2”:
返回“二”;
打破
案例“3”:
返回“三”;
打破
}
});

document.write(newValue)
您可能想先阅读这篇文章:。如果我处理的唯一标记是h1和h2,那么这个解决方案就可以了,但我的旧值可以包含任何html标记,例如,我需要一个更通用的解决方案来处理所有html标记@但我的旧值可以包含任何html标记根据问题要求的描述,
是否不应受到替换的影响?您应该能够在
jQuery()
处添加多个选择器,并在
num
处使用上述当前答案的模式替换多个数字?或者您甚至可以使用通用选择器
$('*')
,谢谢您,我认为这会很好,但还有一点我有html var oldValue=“Title1:Hi iam first titleTitle3 Hi iam third title iam a div 23像素宽”的字符串;如何动态地将其更改为document元素以在其上应用通用选择器,因为$('*')将在当前文档上工作,而当前文档不是我的目标@code>('.myClass')
选择器,或者向其容器添加一个类并使用
$('containerSelector*)
selector。如果我面对的所有标记都以数字结尾,后跟>字符,这将很好,但实际上我的案例可以包含任意数量的标记和任何类型,例如title3我需要一个更通用的解决方案来处理所有html标记@محعب㶊حم“我需要一个更通用的解决方案来处理所有html标记”原始问题中的示例字符串仅包含
h1
h3
标记。您能否更新问题以描述您试图通过实际的
html
、使用的字符串实现的目标?@您可以使用Tushar发布的解决方案;将数字映射到单词,将数字替换为对象的值
<h1>Titleone: Hi iam first title</h1><h3>Titlethree hi iam third title</h3>\
<div style='width:23px'>iam a div with twothree pixels width</div>
var oldValue = '<h1>Title1: Hi iam first title</h1><h3>Title3 hi iam third title</h3>
<div style='width:23px'>iam a div with 23 pixels width</div>';
var newValue = oldValue.replace(/1|2|3/g, function convertNumbers(x) {
    switch (x) {
        case '1':
            return 'one';
            break;
        case '2':
            return 'two';
            break;
        case '3':
            return 'three';
            break;
    }
});
<hone>Titleone: Hi iam first title</hone><hthree>Titlethree hi iam third title</hthree>
<div style='width:twothreepx'>iam a div with twothree pixels width</div>
<h1>Title1: Hi iam first title</h1>