Javascript 如何过滤显示允许和不允许的所有特殊字符(下划线旁边)?

Javascript 如何过滤显示允许和不允许的所有特殊字符(下划线旁边)?,javascript,php,Javascript,Php,如何过滤显示允许和不允许的所有特殊字符(下划线旁边) 根据我的意愿,我只允许文本、数字和下划线 但当我测试这段代码时,我会尝试在它将显示的输入中填充123456abcd& 123456abcd&available如何过滤所有特殊字符(下划线旁) index.php <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script langua

如何过滤显示允许和不允许的所有特殊字符(下划线旁边)

根据我的意愿,我只允许文本、数字和下划线

但当我测试这段代码时,我会尝试在它将显示的输入中填充
123456abcd&

123456abcd&available
如何过滤所有特殊字符(下划线旁)

index.php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script language="JavaScript">
       var HttPRequest = false;

       function doCallAjax() {
          HttPRequest = false;
          if (window.XMLHttpRequest) { // Mozilla, Safari,...
             HttPRequest = new XMLHttpRequest();
             if (HttPRequest.overrideMimeType) {
                HttPRequest.overrideMimeType('text/html');
             }
          } else if (window.ActiveXObject) { // IE
             try {
                HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");
             } catch (e) {
                try {
                   HttPRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
             }
          } 

          if (!HttPRequest) {
             alert('Cannot create XMLHTTP instance');
             return false;
          }

          var url = 'check_char.php';
          var pmeters = "CUsername=" + encodeURI( document.getElementById("CheckUsername").value);
            HttPRequest.open('POST',url,true);
            HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            HttPRequest.setRequestHeader("Content-length", pmeters.length);
            HttPRequest.setRequestHeader("Connection", "close");
            HttPRequest.send(pmeters);
            HttPRequest.onreadystatechange = function()
            {

                if(HttPRequest.readyState == 3)  // Loading Request
                {
                    document.getElementById("mySpan").innerHTML = "..";
                }
                if(HttPRequest.readyState == 4) // Return Request
                {
                    if(HttPRequest.responseText == 'Y')
                    {
                        window.location = 'AjaxPHPRegister3.php';
                    }
                    else
                    {
                        document.getElementById("mySpan").innerHTML = HttPRequest.responseText;
                    }
                }       
            }
       }
    </script>


        <input size="30" tabindex="1" type="text" name="CheckUsername" id="CheckUsername" onchange="JavaScript:doCallAjax();" 
         value="<?php if(isset($_POST['CheckUsername'])) echo $_POST['CheckUsername']; ?>"> 
        <span id="mySpan"></span>

var-HttPRequest=false;
函数doCallAjax(){
HttPRequest=false;
如果(window.XMLHttpRequest){//Mozilla,Safari,。。。
HttPRequest=新的XMLHttpRequest();
if(HttPRequest.overrideMimeType){
HttPRequest.overrideMimeType('text/html');
}
}如果(window.ActiveXObject){//IE
试一试{
HttPRequest=新的ActiveXObject(“Msxml2.XMLHTTP”);
}捕获(e){
试一试{
HttPRequest=新的ActiveXObject(“Microsoft.XMLHTTP”);
}捕获(e){}
}
} 
如果(!HttPRequest){
警报(“无法创建XMLHTTP实例”);
返回false;
}
var url='check_char.php';
var pmeters=“CUsername=“+encodeURI(document.getElementById(“CheckUsername”).value);
HttPRequest.open('POST',url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
HttPRequest.setRequestHeader(“内容长度”,pmeters.length);
setRequestHeader(“连接”、“关闭”);
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange=函数()
{
if(HttPRequest.readyState==3)//加载请求
{
document.getElementById(“mySpan”).innerHTML=“…”;
}
if(HttPRequest.readyState==4)//返回请求
{
如果(HttPRequest.responseText=='Y')
{
window.location='ajaxppregister3.php';
}
其他的
{
document.getElementById(“mySpan”).innerHTML=HttPRequest.responseText;
}
}       
}
}

我要做的是检查允许的字符并计数。查看以下选项是否适用于您:

<?php
$strUsername = $_POST[CUsername]; 
$strlen =  strlen($strUsername);          
$valid_char_count = strlen(preg_replace('/[^a-zA-Z0-9_]/', '', $strUsername));

if (($valid_char_count < $strlen) || $valid_char_count < 1) {
 if($valid_char_count < $strlen) {
    echo "Username can only contain letters, numbers and underscores (and no spaces!)";
 }

 if ($valid_char_count < 1) { 
    echo "Username must have at lest 1 letter or number"; 
    }
} else {
    echo $strUsername." available";
}
?>


@uzasnik。。。这可能是注释问题的原因是
index.php
ok,我认为ajax无法将像
&
这样的特殊字符发送到
check\char.php
pageok,我在输入中填充
abcd1234&&&
时进行了测试,显示
用户名只能包含字母、数字和下划线(并且没有空格!)
因为
abcd1234&&&&&
have
&&&&&&&
是一种特殊的图表,这很奇怪。我已经测试了上面的PHP脚本,它适用于我的abcd1234&&&input=>它返回“用户名只能包含字母、数字和下划线(并且没有空格!)”是否应用文件
index.PHP
<?php
$strUsername = $_POST[CUsername]; 
$strlen =  strlen($strUsername);          
$valid_char_count = strlen(preg_replace('/[^a-zA-Z0-9_]/', '', $strUsername));

if (($valid_char_count < $strlen) || $valid_char_count < 1) {
 if($valid_char_count < $strlen) {
    echo "Username can only contain letters, numbers and underscores (and no spaces!)";
 }

 if ($valid_char_count < 1) { 
    echo "Username must have at lest 1 letter or number"; 
    }
} else {
    echo $strUsername." available";
}
?>