如何限制特殊字符和(/,*,+)

时间:2015-03-05 07:43:54

标签: javascript regex html5 validation textbox

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

mycode的:

$('#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;
               }

           }
       });

如果我们尝试了这段代码,它会限制光谱字符,但它允许 - ,/,+请指导我只允许数字和字母和连字符

3 个答案:

答案 0 :(得分:2)

使用正则表达式模式匹配非常容易。

对于JavaScript,我建议使用https://regex101.com/,对于正则表达式,我建议使用Rubular进行测试和学习。

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

/pattern/flags

**首先,声明正则表达式*

/<regex here>/

为了只捕获某些类型的字符,我们将使用字符类。

/[<char class here]/

然后使用此类匹配第一个小写字母,第一个大写字母,第一个数字或第一个“ - ”字符。

/[a-zA-Z0-9-]/

这只会抓住第一个字符

由于我们需要所有匹配的字符,因此我们为 global 添加了标记g, 这将返回所有匹配的字符。获取所有合法标志的最终模式就是这样:

/[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);
}

答案 1 :(得分:1)

替换此部分:

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

答案 2 :(得分:0)

我已经使用了此代码,Alhamd ul Lillah正在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);">

希望您也能从中受益!