Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅限制特殊字符和(/、*、+;)_Javascript_Regex_Html_Validation_Textbox - Fatal编程技术网

Javascript 如何仅限制特殊字符和(/、*、+;)

Javascript 如何仅限制特殊字符和(/、*、+;),javascript,regex,html,validation,textbox,Javascript,Regex,Html,Validation,Textbox,我们有一个文本字段。我们知道如何限制特殊字符。但我们只需要允许字母、数字和连字符(-),不需要特殊字符,除了(-)。给我任何想法 霉菌代码: $('#pduration').keydown(function (e) { if (e.shiftKey || e.ctrlKey || e.altKey) { e.preventDefault(); } else { var key = e.ke

我们有一个文本字段。我们知道如何限制特殊字符。但我们只需要允许字母、数字和连字符(-),不需要特殊字符,除了(-)。给我任何想法

霉菌代码:

$('#pduration').keydown(function (e) {
           if (e.shiftKey || e.ctrlKey || e.altKey) {
                e.preventDefault();
            } else {
               var key = e.keyCode;
               if (keyCodeEntered == 45) {
                   // Allow only 1 minus sign ('-')...
                  if ((elementRef.value) && (elementRef.value.indexOf('-') >= 0))
                       return false;
                   else
                       return true;
               }

           }
       });
如果我们尝试此代码,它是限制光谱字符,但它允许-,/,+请指导我仅允许数字和字母以及仅允许连字符替换此部分:

if (keyCodeEntered == 45) {
// Allow only 1 minus sign ('-')...
if ((elementRef.value) && (elementRef.value.indexOf('-') >= 0))
       return false;
{
else
     return true;
}
为此:

 //         keys a-z,0-9               numpad keys 0-9            minus sign    backspace
if ( ( key >= 48 && key <= 90 ) || ( key >= 96 && key <= 105 )  || key == 109 || key==8)
{
    //return true;
}
else
{
    //return false
}
})
//a-z键,0-9 numpad键0-9减号退格

如果((key>=48&&key=96&&key使用正则表达式模式匹配非常容易

对于JavaScript,我推荐,对于正则表达式,我推荐Rubular用于测试和学习

正则表达式模式如下所示:

/pattern/flags
**首先,声明一个正则表达式模式*

/<regex here>/
这将只捕获第一个字符

因为我们需要所有匹配的字符,所以我们为全局添加了标志
g
, 它将返回匹配的字符。获取所有合法标志的最终模式如下:

/[a-zA-Z0-9-]/g
图案就是这样

为了检查某些内容是否包含非法字符,如您所问,您可以执行以下操作(两个示例都有效):


我已经使用了这个代码,它100%工作

<script type="text/javascript">
        /*  48-57 - (0-9) NUMBERS
            65-90 - (A-Z)
            97-122 - (a-z)
            8 - (BACKSPACE)
            32 - (SPACE)
            45 - '-' (MINUS, HYPHEN, DASH)
        */ // NOT ALLOW SPECIAL
        function blockSpecialKeys(e) {
            var Keys = e.keyCode;
                return ( 
                    ( Keys >= 65 && k <= 90 ) || // (A-Z)
                    ( Keys >= 97 && k <= 122 ) || // (a-z)
                    ( Keys == 8 ) || // (BACKSPACE)
                    ( Keys == 32 ) || // (SPACE)
                    ( Keys == 45 ) // '-' (MINUS, HYPHEN, DASH)
                    );
        } // END OF blockSpecialKeys FUNCTION
</script>
    <input type="text" ... remaining coding ... onKeyPress="return blockSpecialKeys(event);">

/*48-57-(0-9)个数字
65-90-(A-Z)
97-122-(a-z)
8-(退格)
32-(空间)
45-“-”(减号、连字符、破折号)
*///不允许特殊
功能块专用键(e){
var-Keys=e.keyCode;
报税表(

(键>=65&&k=97&&k给我一些想法?你试过解决这个问题吗。@unikorn谢谢回复,我们只知道我们需要的限制特殊字符,连字符除外。请将代码作为well@unikorn请指导我如何添加代码我们尝试过这样的$(函数(){$('#pno').keydown(函数(e){alert(“first”);var key=e.keyCode;如果((key>=48&&key=96&&key)您的代码工作正常,但退格功能对我不起作用。请指导我编辑代码以允许退格(keyCode 8)
/[a-zA-Z0-9-]/g
function verifyIllegalCharacters (inputString) 
{
    // Copy the results from replace to new string
    // It now holds the original string, minus all legal characters.
    // Since they were overwritten by "".
    var newStr = inputString.replace(/[a-zA-Z0-9-]/g, "");

    // If length is 0, all legal characters were removed, 
    // and no illegal characters remain. 
    return (newStr.length == 0);
}

function verifyIllegalCharacters (inputString) 
{
    // Same, but here we instead check for characters
    // NOT matching the pattern. Above we capture all legal chars,
    // here we capture all illegal chars by adding a ^ inside the class,
    // And overwrite them with "".
    var newStr = inputString.replace(/[^a-zA-Z0-9-]/g, "");

    // If the lengths aren't equal, something was removed
    // If something was removed, the string contained illegal chars.
    // Returns true if no illegal chars, else false.
    return (newStr.length == inputString.length);
}
<script type="text/javascript">
        /*  48-57 - (0-9) NUMBERS
            65-90 - (A-Z)
            97-122 - (a-z)
            8 - (BACKSPACE)
            32 - (SPACE)
            45 - '-' (MINUS, HYPHEN, DASH)
        */ // NOT ALLOW SPECIAL
        function blockSpecialKeys(e) {
            var Keys = e.keyCode;
                return ( 
                    ( Keys >= 65 && k <= 90 ) || // (A-Z)
                    ( Keys >= 97 && k <= 122 ) || // (a-z)
                    ( Keys == 8 ) || // (BACKSPACE)
                    ( Keys == 32 ) || // (SPACE)
                    ( Keys == 45 ) // '-' (MINUS, HYPHEN, DASH)
                    );
        } // END OF blockSpecialKeys FUNCTION
</script>
    <input type="text" ... remaining coding ... onKeyPress="return blockSpecialKeys(event);">