我有一个触及文本框,用户可以在其中设计一个html页面,我无法访问事件键盘也无法访问TextArea,所以我无法更改运行时用户输入数字的输入,所以我会最后得到一个包含各种html标签的vistext值,并且在vistext值中允许任何html标签,现在我想将用户在文本中输入的任何数字更改为word,意味着如果用户输入1我想要它是单词(一)和2,3,4 ..等,但同时我想保持在html标签中找到的数字,因为它没有任何变化,以保持用户对达到文本的样式他设计了,例如,如果我有以下生成的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>
这只是一个示例,但用户可以构造任何html设计和样式和标记,因此输入可能不同,并且比此示例更复杂。 使用javascript我想将其更改为:
<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>
我尝试使用RegularExpressions来替换any之间的字符串
(>
)和(<
)但不知道如何构造正则表达式,
请帮忙。
现在,我想指定一个模式,只替换html中的文本,不要更改html标签的样式或属性中的数字,在我看来,可以通过使用正则表达式查找模式来实现是'&gt;'的文字在左侧和'&lt;'在右侧,例如:
<h1>Title1: Hi iam first title</h1>
如果我通过获取包含'&gt;'的字符串来应用前一个字符串的模式在左边和'&lt;'在右边,我只会得到'Title1:嗨我第一个冠军'所以我将替换在这个结果字符串中找到的数字,以获得我想要的输出。 是否有可能,或者我必须重新考虑使用正则表达式并找到另一种方法来完成任务?
答案 0 :(得分:4)
您可以使用jQuery text(function)
方法更新元素的innerText。
// To store the string representation of the digits
var num = [undefined ,'one', 'two', 'three'];
// Iterate over all the `<h1>`, `<h3>`
$('h1, h3').text(function(i, text) {
// Match 1, 2 or 3. Regex can also be written as `[123]` or `[1-3]`
return text.replace(/1|2|3/g, function(number) {
return num[number]; // Replace by the textual representation.
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<h1>Title1</h1><h3>Title3</h3>
答案 1 :(得分:0)
如果字符后面没有RegExp
字符,您可以使用/(1|2|3)(?!>)/g
1
来匹配2
,3
或>
var oldValue = '<h1>Title1</h1><h3>Title3</h3>';
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;
}
});
document.write(newValue)
&#13;