【问题标题】:Value.match(/[^0-9|\/]/gi) is not working for numbers?Value.match(/[^0-9|\/]/gi) 不适用于数字?
【发布时间】:2020-04-30 23:34:20
【问题描述】:
if (value.match(/[^0-9|\/]/gi)) {
super.setValue(this.value, { ...options, emitModelToViewChange: true });
return;
}
为什么这个 value.match 不起作用?
这是从教程中复制的,对于讲师来说,它的工作正常。
如果我在输入中输入 number 或 '/' 应该是正确的,但在我的情况下,这个 if 语句将永远不会执行。 p>
感谢您的帮助。
【问题讨论】:
标签:
javascript
regex
match
expression
【解决方案1】:
[^0-9] 匹配除 0-9 范围内的任何字符
// E.g.
"9".match(/[^0-9|\/]/g) // null
"9".match(/[^0-5|\/]/g) // ["9"]
【解决方案2】:
在正则表达式中,^ 表示 NOT。您在 0-9 或“/”范围内放置了一个 NOT。您当前的正则表达式将为字母表返回 true。删除 ^ 并尝试以下操作:
if (value.match(/[0-9|\/]/gi)) {
super.setValue(this.value, { ...options, emitModelToViewChange: true });
return;
}
对于数字或“/”,这应该返回 true。 /[^[0-9]|/]/gi 对于 '/' 会给出 true,但对于数字则不会。