使用多重正则表达式进行输入验证
Input Validation using Multiple Regex
我有一个文本字段,用户可以在其中输入使用数值运算符的数值字段。下面是有效输入
的一组示例1. > 3
2. >= 3
3. < 3
4. <= 3
5. <> 3 (NOT)
6. 3 to 5 (RANGE)
7. <> 3 to 5 (NOT RANGE)
我有下面的逻辑工作。我在keyup
上遍历每个regex
。我想知道有没有更优雅更好的方法?
function myFunction() {
var x, text;
// Get the value of the input field with id="numb"
x = document.getElementById("numb").value;
var arrRegex = new Array("^>=''d+$", "^<=''d+$", "^>''d+$", "^<''d+$", "^''d+$", "^<> ''d+$", "^<> ''d+ to ''d+$", "^''d+ to ''d+$");
c = false;
for (i = 0; i < arrRegex.length; i++) {
var regex = new RegExp(arrRegex[i]);
if (regex.test(x)) {
c = true;
}
}
if (c == true) {
document.getElementById("numb").style.backgroundColor = "green";
} else {
document.getElementById("numb").style.backgroundColor = "red";
}
}
可以在<input>
元素上设置RegExp
为pattern
属性的值,使用css
:invalid
为元素的background
属性设置样式;如果元素.value.length === 0
或:not(:focus)
在css
,则将className
设置为input
, focus
事件,将background
设置为unset !important
,否则删除className
以仅应用css
:valid
, :invalid
样式
input:invalid {
background: red;
}
input:valid {
background: green;
}
input:not(:focus), .clear {
background: unset !important;
}
<input pattern="^(|>='d+$|<='d+$|>'d+$|<'d+$|'d+$|<> 'd+$|<> 'd+ to 'd+$|'d+ to 'd+)$">
<script>
var input = document.querySelector("input[pattern]")
input.onfocus = input.oninput = function() {
this.classList.toggle("clear", this.value.length === 0)
}
</script>
您可以在regex中使用or (|
)将它们合并为一个:
var regex = /^(>='d+|<='d+|>'d+|<'d+|'d+|<> 'd+|<> 'd+ to 'd+|'d+ to 'd+)$/;
var isValid = regex.test(x);
相关文章:
- 是否有一种方法可以使用公共代码库在Java和JavaScript中进行输入验证
- 输入验证&使用javascript或asp返回
- 带有输入验证的Javascript
- 表单和输入验证
- 输入验证仅在lur上
- 使用jQuery进行输入验证
- 如何在 JavaScript 中将输入验证为数字
- 使用正则表达式进行输入验证
- Int 输入验证 - 解析服务器云代码
- jQuery/JS 输入验证
- 使用 Angular 要求输入启用注册:需要输入/验证
- 比较输入验证HTML JavaScript中的两个输入值
- simpleCart(js)将表单输入验证添加到电子邮件结账提交中
- Javascript:输入验证
- 淘汰计算和输入验证
- 使用javascript addevent监听器在引导程序html表单上输入验证
- 使用JavaScript进行输入验证
- HTML 5表单输入验证
- 禁用输入类型=数字的输入验证
- AngularJs表单中的输入验证