Javascript RegEx部分匹配
我有一个正则表达式模式,验证三位数字
/^d{3}$/.test("123") // true
/^d{3}$/.test("123.") // false
我想使用这个正则表达式作为文本框的输入限制。
基本上,如果新值匹配,我允许键入字符,否则我阻止它。
问题是没有任何值会匹配,因为“1”不是完全匹配,并且不允许我键入它。
是否有任何方式测试在JavaScript中的regEx部分匹配?
/^d{3}$/.test("123") // true
/^d{3}$/.test("12") // "partial match"
/^d{3}$/.test("a12") // false
编辑
d {3}只是一个例子。 我需要使用电子邮件正则表达式或电话正则表达式作为输入限制。
"email" // true
"email@" // true
"email@@" // false
"@yahoo.com" // false
编辑2
我有一个基于正则表达式的输入限制的textBox插件。
正则表达式可以是任何东西,一个十六进制颜色正则表达式,例如:(#){1}([a-fA-F0-9]){6}
我需要阻止用户插入与正则表达式不匹配的字符。
例如,如果文本框为空,则第一个允许的字符将是“#”。
但是,如果我测试“#”字符对正则表达式,它会返回“false”,因为“#”本身是无效的。
/^(#){1}([a-fA-F0-9]){6}$/.test("#") // false
但同时,“#”是部分有效的,因为它尊重正则表达式格式(并且我应该允许用户键入它)
我需要知道的是,如果我可以验证字符串是否是正则表达式的部分匹配,那么我可以允许用户输入字符。
/^(#){1}([a-fA-F0-9]){6}$/.test("#") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#0") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#00") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#0000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#00000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000000") // is a partial match, allow type
/^(#){1}([a-fA-F0-9]){6}$/.test("#000000D") // is not a match, prevent typing
你最好使用像maskedinput.js这样的库。 然后你可以设置你的文字输入如下:
jQuery(function($){
$("#your_input").mask("999");
});
UPDATE
您可以使用表单验证程序并预设特定类型的字段进行验证
您可以使用()?
部分验证电子邮件地址()?
为更多的字母和/或字符。 Every ()?
在验证树中进一步深入。
以下正则表达式模式可逐个字母验证电子邮件地址。
^[a-zA-Z]+(@{1}[a-zA-Z]*(.{1}[a-zA-Z]*)?)?$
它并没有考虑到那里的所有可能性,但对于像aa@bb.dd这样的基本类型来说,它工作得很好,还有进一步改进的空间。
您可以在表达式中指定一个范围,以便它匹配一到三位数字之间的任何内容,如下所示:
/^d{1,3}$/.test("1") // true
/^d{1,3}$/.test("12") // true
/^d{1,3}$/.test("123a") // false
链接地址: http://www.djcxy.com/p/77009.html
上一篇: Javascript RegEx partial match
下一篇: Regex validation of operators in conditional statements