Javascript Can';我想不出是什么';RegExp问号是怎么回事

Javascript Can';我想不出是什么';RegExp问号是怎么回事,javascript,regex,Javascript,Regex,我想匹配前面有点的数字集,或者什么都不匹配。我提出了正则表达式(?:\。\d+)。但是,它将匹配字符串,即使\d上的量词是加号。如果我去掉了最后一个问号,我相信这会使组成为可选的,因为没有前面的量词,那么它工作得很好。我在JavaScript中使用RegExp引擎,在本例中特别是node.js 以下是我从测试中得到的信息: .123,不带可选项:true ,不带可选项:false 空,不带可选项:false .123,带可选值:true ,可选:true 空,可选:true .123,应为:t

我想匹配前面有点的数字集,或者什么都不匹配。我提出了正则表达式
(?:\。\d+)
。但是,它将匹配字符串
,即使
\d
上的量词是加号。如果我去掉了最后一个问号,我相信这会使组成为可选的,因为没有前面的量词,那么它工作得很好。我在JavaScript中使用RegExp引擎,在本例中特别是
node.js

以下是我从测试中得到的信息:

  • .123
    ,不带可选项:true
  • ,不带可选项:false
  • 空,不带可选项:false

  • .123
    ,带可选值:true

  • ,可选:true
  • 空,可选:true

  • .123
    ,应为:true

  • ,应为:false
  • 空,应为:真
谢谢。

使用

/^<your regex>$/
正则表达式将匹配任何非空字符串。

使用

/^<your regex>$/

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

您需要像这样向正则表达式添加^和$标记

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

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

您需要像这样向正则表达式中添加^和$标记

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

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

您可以添加这些测试用例是否应该匹配(预期输出)。类似于:.123,不带optional:true,应该匹配……您将整个捕获组设置为可选,这基本上就是您的表达式。字符串上不需要显示任何内容(所有内容都是可选的),因此任何字符串都可以显示。难道
/(\。\d+)/
就足够了吗?(或者
/\(\d+/
如果你不想抓住这个点?@DanielBeck Ha我刚刚在我的答案中添加了这一点,OP肯定是过度复杂化了:你可以添加这些测试用例是否应该匹配(预期输出)。类似于:.123,不带optional:true,应该匹配……您将整个捕获组设置为可选,这基本上就是您的表达式。字符串上不需要显示任何内容(所有内容都是可选的),因此任何字符串都可以显示。难道
/(\。\d+)/
就足够了吗?(或者
/\(\d+/
如果你不想抓住这个点?@DanielBeck Ha我刚刚在我的回答中添加了这一点,OP肯定是把事情复杂化了:但是,这是一个什么样的答案?@BoxTechy这是如何回答你的问题的?这仍然会匹配OP想要匹配的空字符串或一个点后跟一个或多个数字的
@Clonkex,这就是答案。@JordanGray哦,对了。我完全误解了这个问题。这个答案确实是正确的(实际上意味着我的答案是错误的)。@Clonkex没关系,正则表达式几乎和它们的编写一样难以描述!:)Wut,这算什么答案?@BoxTechy这怎么回答你的问题?这仍然会匹配OP想要匹配的空字符串或一个点后跟一个或多个数字的
@Clonkex,这就是答案。@JordanGray哦,对了。我完全误解了这个问题。这个答案确实是正确的(实际上意味着我的答案是错误的)。@Clonkex没关系,正则表达式几乎和它们的编写一样难以描述!:)<代码>/^(?:\.\d+)$/.test(“”)也将为真
/^(?:\.\d+)$/.test(“”)
也将为真