无法弄清楚RegExp问号会发生什么

时间:2017-07-04 22:46:51

标签: javascript regex

我希望匹配以点开头的数字组,或者根本不匹配。我提出了正则表达式if (playing === true) {。但是,即使(?:\.\d+)?上的量词是一个加号,它也会匹配字符串.。如果我摆脱了最后一个问号,我认为这使得该组成为可选的,因为没有前面的量词,那么它工作正常。我在JavaScript中使用RegExp引擎,在这种情况下特别是\d

这是我从测试中得到的结果:

  • node.js,没有可选:true
  • .123,没有可选:false
  • 为空,没有可选:false

  • .,可选:true

  • .123,可选:true
  • 为空,可选:true

  • .,预期:true

  • .123,预期:false
  • 空,预期:真实

感谢。

2 个答案:

答案 0 :(得分:2)

使用

/^<your regex>$/

作为一般规则,以确保您的整个字符串匹配。现在你的正则表达式允许空字符串可以随时匹配。

请注意

/(?:\.\d+)?/.test('a') === true

并且正则表达式将匹配任何非空字符串。

答案 1 :(得分:1)

您需要将^和$标记添加到正则表达式中,如此

^(?:\.\d+)?$

否则它将匹配字符串中任何一点的空字符串。