【问题标题】:jqunit, testing regex fails at some point, why?jqunit,测试正则表达式在某些时候失败,为什么?
【发布时间】:2014-09-04 13:52:34
【问题描述】:

我正在 jqunit 的帮助下研究关于正则表达式的测试用例:

test("Date entry should be a Date", function () {
    ok(/(\d+[-/\.]\d+[-/\.]\d+)/g.test("10.12.2014"), "Date is not parsed correctly: 10.12.2014");
    ok(/(\d+[-/\.]\d+[-/\.]\d+)/g.test("10-12-2014"), "Date is not parsed correctly: 10-12-2014");
    ok(/(\d+[-/\.]\d+[-/\.]\d+)/g.test("10/12/2014"), "Date is not parsed correctly: 10/12/2014");
});

第二个条件失败,但在浏览器的控制台或regexr.com上执行它们 所有这些都是真实的。这种行为来自哪里的任何提示?

【问题讨论】:

    标签: javascript regex unit-testing


    【解决方案1】:

    当你只使用 test 时,不要在正则表达式中使用 g 标志:这没有意义,更重要的是,它使它成为一个迭代器,每次调用 test 和我猜想文字正则表达式在 jqunit 中不止一次使用。

    改变

    /(\d+[-/\.]\d+[-/\.]\d+)/g
    

    /(\d+[-/\.]\d+[-/\.]\d+)/
    

    【讨论】:

    • 仅仅为了让测试愉快而改变代码是没有意义的。我们编写代码来解决问题。我们不为测试编写代码。在这里查看我的答案:stackoverflow.com/questions/25851583/…
    • @JoeFrambach 你注意到正则表达式是用test 函数调用的吗(这是一个标准的JavaScript 函数,它与任何测试单元系统都没有链接)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多