我正在使用以下javascript返回一个数组,其中包含在字符串
中找到的前两个数值text.match(/(\d+)/g);
如果找到一个开括号,我怎么能停止搜索,而是返回NaN或零? 例如:
答案 0 :(得分:3)
在正则表达式中使用前瞻,以匹配第一个(
之前的所有数字,
\d+(?=[^()]*\()
示例:强>
> "10-20 bags (+£1.50)".match(/\d+(?=[^()]*\()/g);
[ '10', '20' ]
> "20+ bags (+£1.00)".match(/\d+(?=[^()]*\()/g);
[ '20' ]
答案 1 :(得分:2)
答案 2 :(得分:0)
如果你真的需要你所要求的全部通用性 - 也就是说,如果匹配的行不一定只包含一个(
- 那么我认为唯一的解决方案是首先匹配前导文本任何括号(即/^([^(]*)/
),然后从中选择你的数字字符串。
Javascript正则表达式不支持lookbehind,这是您使用单个正则表达式指定的完全通用性所需的工作。