单击按钮时,我试图将(显示)*
样式从用户输入文本区域更改为 italic
样式。但是没有任何工作没有错误,我认为我的逻辑有点错误但无法再想了!!!
var italic = 0;
$("#btn").click(function(){
var val = $("#usr").val();
val.split("").forEach(function(v,i){
var sts = /\*/g.test(v);
if(sts){
if(italic == 1){
val.substr(0, i) + '</i>' + val.substr(i + 1);
italic = 0;
}
else{
val.substr(0, i) + '<i>' + val.substr(i + 1);
italic++;
}
}
});
$("#display").html(val);
});
#display {
background: #aaa;
width: 30%;
height: auto;
border: 1px solid #ded;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<textarea id="usr"></textarea>
<button id="btn">Insert</button>
<div id="display"></div>
最佳答案
使用简单的 \*(.*?)\*
将输出包装在 <i>
标签中:
$(document).ready(function() {
$('textarea').keyup(function() {
$('#output').html($(this).val().replace(/\*(.*?)\*/g, '<i>$1</i>'));
})
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea></textarea>
<div id="output"></div>
正则表达式解释:
\*
- 文字 *
(正则表达式中的 *
表示任何字符).*?
- 任何字符()
- 稍后可以与 $1
、 $2
一起使用的捕获组...( (.*?)
- 捕获任何字符)/
- RegEx 分隔符(可以是任何字符\*(.*?)\*
- 匹配字符 *
,而不是任何字符直到找到 *
关于javascript - 如何通过javascript将*更改为斜体?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39221509/