Javascript RegEx 部分匹配
Javascript RegEx partial match
我有一个正则表达式模式,它验证一个三位数字
/^'d{3}$/.test("123") // true
/^'d{3}$/.test("123.") // false
我想将此正则表达式用作文本框的输入限制。
基本上,如果新值匹配,我允许该字符通过键入,否则我会阻止它。
问题是没有值会匹配,因为"1"不是完全匹配,并且不允许我键入它。
有没有办法在javascript中测试正则表达式的部分匹配?
/^'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
我有一个文本框插件,其中包含基于正则表达式的输入限制。
正则表达式可以是任何颜色,十六进制颜色正则表达式,例如:(#({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
您可以通过使用 ()?
来部分验证电子邮件地址以获取更多字母和/或字符。每个()?
都在验证树中深入。
以下正则表达式模式逐个字母验证电子邮件地址。
^[a-zA-Z]+(@{1}[a-zA-Z]*('.{1}[a-zA-Z]*)?)?$
它没有考虑到所有的可能性,但对于像 aa@bb.dd 这样的基本可能性,它工作得很好,并且还有进一步改进的空间。
使用像maskedinput.js这样的库。然后,您可以按如下方式设置文本输入:
jQuery(function($){
$("#your_input").mask("999");
});
更新
您可以对表单使用验证器,并预设特定类型的字段进行验证
您可以在表达式中指定一个范围,以便它匹配一到三位之间的任何内容,如下所示:
/^'d{1,3}$/.test("1") // true
/^'d{1,3}$/.test("12") // true
/^'d{1,3}$/.test("123a") // false
只需提供一个允许部分匹配的正则表达式。 例如 /^'d{1,3}$/
根据您上次的编辑,这应该有效:
/^#[a-fA-F0-9]{0,6}$/
使用显式的"|"部分匹配。对于您的颜色匹配示例,它非常简单,您只需要显式匹配一个空字符串部分
/^(|#[a-f0-9]{0,6})$/i.test(inputStr)
对于电子邮件,它更复杂,因为有更多的部分匹配组合
/^(|'w+|'w+@|'w+@'w+|'w+@'w+'.|'w+@'w+'.'w+)$/.test(inputStr)
请注意,您无法摆脱像/^(|'w*@|...)$/
这样的东西,因为它与不是有效部分输入的@blah.com
匹配。
- RegEx JavaScript:数字后的符号提取
- 在RegEx(JavaScript)中正确转义变量
- REGEX (javascript) - 允许字母数字字符中的特殊字符不在第一个位置
- Regex Javascript 如何模仿 PHP Regex 的 Negative Lookback
- 创建密码regex(javascript)
- 使用Regex Javascript选择第一个目录
- Regex/Javascript;否定地选择两个字符的重复
- W RegEx JavaScript
- Regex javascript remove _ -
- 匹配引号之间的随机字符串Regex javascript
- 使用regex/JavaScript将EDT时间戳转换为PST
- Regex Javascript电话号码验证最小-最大长度检查
- 测试相邻辅音的Regex(Javascript)
- Regex/Javascript函数将价格存储为基于美分的数字
- 从匹配的Regex JavaScript中选择字符
- Regex Java vs Regex Javascript
- Regex JavaScript字符串并将结果存储到变量中
- 前面有的Regex javascript
- RegEx Javascript-我做错了什么
- 搜索'www.'替换为'http://'使用regex javascript