【问题标题】: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,但对于数字则不会。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-04
        • 2014-10-22
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2018-02-05
        • 1970-01-01
        相关资源
        最近更新 更多