需要javascript正则表达式来允许数字、单个和特定的字母数字字符和破折号

需要javascript正则表达式来允许数字、单个和特定的字母数字字符和破折号,javascript,regex,Javascript,Regex,有谁能帮助提供一个javascript正则表达式,该正则表达式允许数字、破折号、甚至括号和单个字母数字字符,只允许一个“x” 谢谢。您可以在下面的链接上找到信息,您可能需要了解Regex的基础知识,它将永远对您有用 RegExp:var re=newregexp('\\w+')([A-Za-z0-9])是一个良好的开端 );p我不确定是否有人愿意为您编写regexp,因此它不是一个代码编写服务。但也许他们可以提供一些指导 说“匹配这个或那个”是非常基本的regexp。你会在任何regex

有谁能帮助提供一个javascript正则表达式,该正则表达式允许数字、破折号、甚至括号和单个字母数字字符,只允许一个“x”


谢谢。

您可以在下面的链接上找到信息,您可能需要了解Regex的基础知识,它将永远对您有用

RegExp:
var re=newregexp('\\w+')
([A-Za-z0-9])
是一个良好的开端


);p

我不确定是否有人愿意为您编写regexp,因此它不是一个代码编写服务。但也许他们可以提供一些指导

说“匹配这个或那个”是非常基本的regexp。你会在任何regexp教程的第一页上找到它——你读过,对吗

它被称为“交替”,由垂直条表示

因此,为了匹配您所要求的任何字符,我们只需要编写

/0|1|2|3|4|5|6|7|8|9|x|-/
在这里,您已经编写了第一个正则表达式

现在我们需要说的是,一系列的事情——一个或多个。要在regexp中这样说,我们使用了一种称为量词的东西----您已经读过了,对吗?它们被称为“量词”,因为它们指定了某物的数量。这里我们需要一个量词来要求一个或多个东西,正如你所记得的,它是加号
+
;你把它放在你想重复的事情之后

这样我们就可以写作了

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

}
函数isFaxValid(传真){
var keyCodeArray=新数组();
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
按键码阵列。按键(40)//(
keyCodeArray.push(41);/)
keyCodeArray.push(32);/“”
按键码阵列。按键(45)//-
$(传真)。按键(功能(键){
if(keyCodeArray.indexOf(key.keyCode)