<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<input type="text" id="ctext" onchange="myFunction();"/>
<script>
function myFunction() {
var str = document.getElementById("ctext").value.toString();
var result = str.replace("\n", "");
result = result.replace(/[^a-zA-Z0-9]/g,'').replace(/__/g,'').replace(/\\/g, "");
document.getElementById("demo").innerHTML = result;
document.getElementById("ctext").value = result;
return false;
}
</script>
实际上,当我们在文本框中输入文本并且发生onchange事件时,我想删除换行符,例如从'\ n'到``,'\ r \ n'到``,'\ t'到''。但不幸的是,它从'\ n'输出为n,从'\ r \ n'输出为rn。我的意思是,它仅删除反斜杠而不删除完整的换行符。
我希望从输入文本中获取的字符串可以转义为特殊字符,换行符(例如'\ n','\ r \ n','\ t'等),例如,如果我们输入此字符串“ sdfjn \ nkl454 \输入文本框中的r \ n \ t __._”。然后onchange应该像sdfjnkl454。但它显示的是sdfjnnk454rnt。
答案 0 :(得分:2)
发生这种情况是因为在JavaScript \
中是转义字符,因此"\n
与"n"
相同。
您可以尝试使用此正则表达式替换这些正则表达式:
const string = `I have whitespaces and new line chars
that are
replaced. Same with tabs`
const replacedString = string.replace(/[\n\s\r\t]*/g, "")
console.log(replacedString);
答案 1 :(得分:1)
代码中的行var result = str.replace("\n", "");
仅替换\n
的第一个匹配项。
为了删除所有出现的\n
,\r
和\t
,请在replace
方法的第一个参数中使用正则表达式,如下所示:
var result = str.replace(/\n|\r|\t/g, "");
以上陈述指出,如果找到任何\n
或\r
或\t
,则只需将其替换为“”。
此外,如果您还需要删除所有下划线,则只需将以上语句更新为:
var result = str.replace(/\n|\r|\t|_/g, "");
答案 2 :(得分:1)
如果要替换“ \ n”,“ \ r”,“ \ t”,则应使用str.replace(/\\n|\\r|\\t/g, "")
function myFunction() {
var str = document.getElementById("ctext").value.toString();
var result = str.replace(/\\n|\\r|\\t/g, "");
result = result.replace(/[^a-zA-Z0-9]/g,'').replace(/__/g,'').replace(/\\/g, "");
result = result.replace(/[^a-zA-Z0-9]/g,'');
document.getElementById("demo").innerHTML = result;
document.getElementById("ctext").value = result;
return false;
}
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<input type="text" id="ctext" onchange="myFunction();"/>
答案 3 :(得分:1)
尝试以下代码以获得所需的确切输出。 试试吧
<p id="demo"></p>
<input type="text" id="ctext" onchange="myFunction();"/>
<script>
function myFunction() {
var str = document.getElementById("ctext").value.replace('\\n','\n');
str = str.replace('\\s','\s');
str = str.replace('\\r','\r');
str = str.replace('\\t','\t');
var result = str.replace(/[_.\n\s\r\t__]*/g, "");
document.getElementById("demo").innerHTML = result;
document.getElementById("ctext").value = result;
return false;
}
</script>