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

时间:2018-06-20 23:16:02

标签: php regex input textarea jscript

我有一个用于用户输入的框,但我需要它是一个可以像记事本一样使用的输入区域,而不仅仅是一行。

我创建了一个文本区域,但是当我尝试对值进行正则表达式时,它不会处理该值,并且会忽略正则表达式..但是会处理一个正则表达式。

这是为什么,我该如何对文本区域的输入进行正则表达式?

<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>

2 个答案:

答案 0 :(得分:2)

您的代码有很多问题。例如缺少开/关引号等。 关于您试图过滤/替换“坏词”的尝试,这根本不是正则表达式语法。

尝试这样:

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>

答案 1 :(得分:0)

不确定这是否是问题,但是您尝试在value属性中放置一些内容,我认为该属性适用于输入,但不适用于textarea元素。所以也许可以解决这个问题:

<textarea class='textbox' name='info' id='infovalue' cols="50" rows="10" required ><?php echo $sellinginfo; ?></textarea>

请参阅:https://stackoverflow.com/a/6007262/9638388