首页 > 解决方案 > 正则表达式不捕获多个字符

问题描述

我有一个百分比值的输入字符串,即“40%*”、“90%*”等。我写了一个正则表达式来捕获数字,以便我可以将其转换为数字并对其进行数学运算(比较)。为此,我使用了以下正则表达式,它适用于这种类型的输入:

'40%*'.match(/[^%]*/)[0] // Outputs '40'

但是,有时输入看起来像这样:“<10%*”。由于这种极端情况,我的正则表达式有一个错误。为了修复,我尝试了这个:

'<10%*'.match(/[^[%<]]*/)[0] // Outputs '1'

但现在它只会捕获 str.match 上的“1”,而不是完整的“10”。我不确定为什么看起来匹配 0 个或更多字符的 * 运算符似乎只匹配 1 个字符?

标签: javascriptregex

解决方案


推荐阅读