可选地在字符串

时间:2016-06-15 12:10:14

标签: regex

我想匹配(两者):

  • I have "arbitrary string"
  • I have 50 "arbitrary string"

我提出:/^I have (\d+)? "([^"]*)"$/匹配第二,但与第一个不匹配。

如何使数字可选?我需要数字数据。

感谢。

2 个答案:

答案 0 :(得分:2)

space +个数字放在非捕获组中,并将其设为可选。如果你想捕获数字,那么就把() \d+放在^I have(?: (\d+))? "([^"]*)"$

附近
{{1}}

DEMO

答案 1 :(得分:1)

您的正则表达式与第一个示例字符串不匹配,因为它在have"之间总共需要两个空格字符。

将表达式更改为/^I have ?(\d+)? "([^"]*)"$/修复它(即,让第一个空格是可选的)。