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