无法正则表达式文本区域,但如果它是输入则可以

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>