【问题标题】:Javascript number regex test failing - can't figure out whyJavascript 数字正则表达式测试失败 - 不知道为什么
【发布时间】:2013-04-18 11:53:15
【问题描述】:

这是一个 jsFiddle:jsFiddle

相关代码:

var number = /\d+(.\d+)?/g;

$('body').append(number.test(2.5) + "<br>");
$('body').append(number.test(20) + "<br>");
$('body').append(number.test(2) + "<br>");

输出

true
false
true

【问题讨论】:

  • 您可能应该跳过这个句号,例如\.. 本身就是通配符匹配
  • @Phil - 不相关,但确实 (updated fiddle)。
  • @jahroy 这不是问题,但会导致更多误报,例如2af
  • @Phil - 我同意你的看法。我更新了小提琴来证明你的观点;-)
  • 其实...菲尔的观点非常重要。大多数以数字开头的字符串都会通过上述测试。例如:2blahblahblah 会通过!!!! (updated fiddle)。

标签: javascript regex


【解决方案1】:

摆脱g。它不是必需的,它会导致正则表达式失败,因为 RegExp 对象根据之前的匹配跟踪其位置:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/test

与 exec(或与它结合使用)一样,在同一个全局正则表达式实例上多次调用 test 将超过上一次匹配。

http://jsfiddle.net/BUpyd/1/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    相关资源
    最近更新 更多