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