需要javascript regex允许数字,单个和特定的alpha数字字符和破折号

Need javascript regex to allow digits, a single and specific alpha numeric character and dashes

本文关键字:单个 破折号 数字字符 alpha regex javascript 许数字 数字 需要      更新时间:2023-09-26

如何创建一个javascript正则表达式,将允许数字,破折号,甚至括号和单个字母数字字符,只是一个'x?'

这是一个非常基本的正则表达式,表示"匹配这个或另一个"。

它被称为" alteration& quot;,它由竖线|表示。

所以要匹配你要求的任何字符,我们只需要写

/0|1|2|3|4|5|6|7|8|9|x|-/

至此,你已经写出了你的第一个正则表达式。

现在我们需要说,这些东西的一个或多个序列。在正则表达式中,我们使用一种叫做量词的东西——你读过这些,对吧?它们被称为"量词"。因为它们指定了某物的数量。这里我们需要量词要求一个或多个东西,你们应该记得,是加号+;你把它放在你想重复的内容后面。

所以我们可以写

/0|1|2|3|4|5|6|7|8|9|x|-+/

,但这不会工作;它只是要求一个或多个-字符。因此,要说出中的一个或多个选项,我们将这些选项放在中,使用括号,并在其后面加上量词:

/(0|1|2|3|4|5|6|7|8|9|x|-)+/

我们越来越近了,除了一个问题。像

这样的调用
regexp.test("string")

将对字符串的任何部分匹配regexp,而不一定是对整个字符串。在本例中,我们希望确保整个字符串与regexp匹配——换句话说,只包含我们希望允许的字符。为此,我们需要使用,你们在阅读材料中还记得,对吧?锚"锚";匹配字符串的开头(^)或结尾($)。所以我们写:

/^(0|1|2|3|4|5|6|7|8|9|x|-)+$/

简单地说:从字符串的开头开始,匹配一个或多个备选项,在字符串的末尾结束。

然而,在这种情况下,我们有一个特殊的情况,其中所有的替代都是单个字符。对于这种常见情况,regexp提供了字符集的概念,我相信您在阅读中还记得。字符集给出了一组字符,其中任何一个都可以匹配。把它写在方括号里:[]。在我们的例子中,它将是:

[0123456789x-]
还记得字符集还允许您使用连字符指定字符的范围,因此我们可以将其简化为
[0-9x-]

最后一个连字符不创建一个范围,因为它在末尾。

。使用交替、组、量词、锚和字符集,您已经编写了所需的regexp:

/^[0-9x-]+$/

我使用了一个传入键的方法。在jquery的keydown事件中,我捕获每个按键并进行测试。如果它不在可用值数组中,JS返回false并且不注册键击。

    function isFaxValid(fax) {
    
        var keyCodeArray = new Array();
        keyCodeArray.push(48); //0
        keyCodeArray.push(49); //1
        keyCodeArray.push(50); //2
        keyCodeArray.push(51); //3
        keyCodeArray.push(52); //4
        keyCodeArray.push(53); //5
        keyCodeArray.push(54); //6
        keyCodeArray.push(55); //7
        keyCodeArray.push(56); //8
        keyCodeArray.push(57); //9
        keyCodeArray.push(40); //(
        keyCodeArray.push(41); //)
        keyCodeArray.push(32); //""
        keyCodeArray.push(45); //-
        $(fax).keypress(function (key) {
        if (keyCodeArray.indexOf(key.keyCode) <= -1) {
            return false;
        }
    });
}

所以,如果以后有人来找我,想要一些诸如"+,"