我有一个正则表达式模式,用于验证三位数
/^\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
答案 0 :(得分:1)
使用像maskedinput.js这样的库会更好。 然后,您可以设置文本输入,如下所示:
jQuery(function($){
$("#your_input").mask("999");
});
<强>更新强>
您可以使用validator表单和预设特定类型的字段来验证
答案 1 :(得分:1)
您可以使用()?
部分验证电子邮件地址以获取更多字母和/或字符。每个()?
在验证树中更深入。
以下正则表达式模式逐个字母地验证电子邮件地址。
^[a-zA-Z]+(@{1}[a-zA-Z]*(\.{1}[a-zA-Z]*)?)?$
它没有考虑到那里的所有可能性,但是对于像aa@bb.dd这样的基本功能,它可以正常工作并且还有进一步改进它的空间。
答案 2 :(得分:0)
您可以在表达式中指定一个范围,使其匹配一到三位数之间的任何内容,如下所示:
/^\d{1,3}$/.test("1") // true
/^\d{1,3}$/.test("12") // true
/^\d{1,3}$/.test("123a") // false
答案 3 :(得分:0)
只提供允许部分匹配的正则表达式。例如/^\d{1,3}$/
答案 4 :(得分:0)
根据您的上一次编辑,这应该有效:
/^#[a-fA-F0-9]{0,6}$/
答案 5 :(得分:0)
你想要使用明确的&#34; |&#34;部分匹配。对于您的颜色匹配示例,它非常简单,您只需要显式匹配空字符串部分
/^(|#[a-f0-9]{0,6})$/i.test(inputStr)
对于电子邮件,由于存在更多部分匹配组合,因此它更复杂
/^(|\w+|\w+@|\w+@\w+|\w+@\w+\.|\w+@\w+\.\w+)$/.test(inputStr)
请注意,您无法使用/^(|\w*@|...)$/
这样的内容,因为它与@blah.com
匹配,而jdbc:sqlserver://localhost;user=MyUserName;password=*****;
不是有效的部分输入。