无法正则表达式文本区域,但如果它是输入则可以
Cannot regex a textarea, but can if its an input
我有一个用户输入框,但我需要它是一个可以像记事本一样使用的输入区域,而不仅仅是一行。
我创建了一个文本区域,但是当我尝试对值进行正则表达式处理时,它不处理它并忽略正则表达式..但是输入处理正则表达式..
这是为什么?我如何对文本区域的输入进行正则表达式?
<div class='container' >
<div class='listtitle' title='Describe Your Items & Give Your Listing as Much Detail As You Can' >Info<br>
<h5>Give Your Listing as Much Detail As You Can.</h5>
</div>
<div id ='infofooter' class='listfooter'>Max Letters: 250</div>
</div><!--container2--->
<script>
$(document).ready(function () {
$('#infovalue').keyup(checkinfo);
});
function checkinfo() {
var info = $("#infovalue").val();
var infoReg = /^[a-zA-Z][a-zA-Z0-9-+&%#=?<>()£~_\.*!, ]{3,54}$/;
if(!infoReg.test(info)) {
$("#infofooter").text("0-250 Standard Characters Please!"), $( "#infovalue" ).addClass( "errorclass" ), $( "#infovalue" ).removeClass( "noerrorclass");
}
if(infoReg.test(info)) {
$("#infofooter").text("info Is Good, Thanks!"), $( "#infovalue" ).addClass( "noerrorclass" ), $( "#infovalue" ).removeClass( "errorclass");
}
var infoB = document.getElementById('infovalue');
var regex= lots/ of/ bad/ words/ - /edited /for /obvious /reasons/gi;
infoB.text=infoB.text.replace(regex, "****");
};
//将 .text 更改为 .val .value 也无济于事。
</script>
不确定这是否是问题所在,但您试图在 value 属性中添加一些内容,我认为这适用于输入,但不适用于 textarea 元素。所以也许这可以解决问题:
<textarea class='textbox' name='info' id='infovalue' cols="50" rows="10" required ><?php echo $sellinginfo; ?></textarea>
参见:
你的代码有很多问题。比如缺少 opening/closing 引号等。
关于您对 filter/replace "bad words" 的尝试,这根本不是正则表达式语法。
试试看:
regex= /\b(?:lots|bad|words|edited|for|obvious|reasons)\b/gi;
如果您不需要子字符串匹配,请从模式中删除 \b
个单词边界。
我还在下面示例中的第一个正则表达式中添加了 /r/n
,如果这是问题所在:
$(document).ready(function () {
$('#infovalue').keyup(checkinfo);
});
function checkinfo() {
var info = $("#infovalue").val();
var infoReg = /^[a-zA-Z][a-zA-Z0-9-+&%#=?<>\(\)£~_\.*!, \r\n]{3,54}$/;
if(!infoReg.test(info)) {
$("#infofooter").text("0-250 Standard Characters Please!"), $( "#infovalue" ).addClass( "errorclass" ), $( "#infovalue" ).removeClass( "noerrorclass");
}
if(infoReg.test(info)) {
$("#infofooter").text("info Is Good, Thanks!"), $( "#infovalue" ).addClass( "noerrorclass" ), $( "#infovalue" ).removeClass( "errorclass");
}
var infoB = document.getElementById('infovalue');
var regex= /\b(?:lots|bad|words|edited|for|obvious|reasons)\b/gi;
infoB.value=infoB.value.replace(regex, "****");
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='container' >
<div class='listtitle' title='Describe Your Items & Give Your Listing as Much Detail As You Can' >Info<br>
<h5>Give Your Listing as Much Detail As You Can.</h5>
</div>
<textarea class='textbox' name='info' id='infovalue' cols="50" rows="10" value="" required >
</input>
<div id ='infofooter' class='listfooter'>Max Letters: 250</div>
</div>
我有一个用户输入框,但我需要它是一个可以像记事本一样使用的输入区域,而不仅仅是一行。
我创建了一个文本区域,但是当我尝试对值进行正则表达式处理时,它不处理它并忽略正则表达式..但是输入处理正则表达式..
这是为什么?我如何对文本区域的输入进行正则表达式?
<div class='container' >
<div class='listtitle' title='Describe Your Items & Give Your Listing as Much Detail As You Can' >Info<br>
<h5>Give Your Listing as Much Detail As You Can.</h5>
</div>
<div id ='infofooter' class='listfooter'>Max Letters: 250</div>
</div><!--container2--->
<script>
$(document).ready(function () {
$('#infovalue').keyup(checkinfo);
});
function checkinfo() {
var info = $("#infovalue").val();
var infoReg = /^[a-zA-Z][a-zA-Z0-9-+&%#=?<>()£~_\.*!, ]{3,54}$/;
if(!infoReg.test(info)) {
$("#infofooter").text("0-250 Standard Characters Please!"), $( "#infovalue" ).addClass( "errorclass" ), $( "#infovalue" ).removeClass( "noerrorclass");
}
if(infoReg.test(info)) {
$("#infofooter").text("info Is Good, Thanks!"), $( "#infovalue" ).addClass( "noerrorclass" ), $( "#infovalue" ).removeClass( "errorclass");
}
var infoB = document.getElementById('infovalue');
var regex= lots/ of/ bad/ words/ - /edited /for /obvious /reasons/gi;
infoB.text=infoB.text.replace(regex, "****");
};
//将 .text 更改为 .val .value 也无济于事。
</script>
不确定这是否是问题所在,但您试图在 value 属性中添加一些内容,我认为这适用于输入,但不适用于 textarea 元素。所以也许这可以解决问题:
<textarea class='textbox' name='info' id='infovalue' cols="50" rows="10" required ><?php echo $sellinginfo; ?></textarea>
参见:
你的代码有很多问题。比如缺少 opening/closing 引号等。 关于您对 filter/replace "bad words" 的尝试,这根本不是正则表达式语法。
试试看:
regex= /\b(?:lots|bad|words|edited|for|obvious|reasons)\b/gi;
如果您不需要子字符串匹配,请从模式中删除 \b
个单词边界。
我还在下面示例中的第一个正则表达式中添加了 /r/n
,如果这是问题所在:
$(document).ready(function () {
$('#infovalue').keyup(checkinfo);
});
function checkinfo() {
var info = $("#infovalue").val();
var infoReg = /^[a-zA-Z][a-zA-Z0-9-+&%#=?<>\(\)£~_\.*!, \r\n]{3,54}$/;
if(!infoReg.test(info)) {
$("#infofooter").text("0-250 Standard Characters Please!"), $( "#infovalue" ).addClass( "errorclass" ), $( "#infovalue" ).removeClass( "noerrorclass");
}
if(infoReg.test(info)) {
$("#infofooter").text("info Is Good, Thanks!"), $( "#infovalue" ).addClass( "noerrorclass" ), $( "#infovalue" ).removeClass( "errorclass");
}
var infoB = document.getElementById('infovalue');
var regex= /\b(?:lots|bad|words|edited|for|obvious|reasons)\b/gi;
infoB.value=infoB.value.replace(regex, "****");
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='container' >
<div class='listtitle' title='Describe Your Items & Give Your Listing as Much Detail As You Can' >Info<br>
<h5>Give Your Listing as Much Detail As You Can.</h5>
</div>
<textarea class='textbox' name='info' id='infovalue' cols="50" rows="10" value="" required >
</input>
<div id ='infofooter' class='listfooter'>Max Letters: 250</div>
</div>