小编rha*_*ton的帖子

在正则表达式中,匹配一个或另一个,或两者

在正则表达式中,我需要知道如何匹配一个或另一个,或两者(按顺序).但至少有一件事需要存在.

例如,以下正则表达式

/^([0-9]+|\.[0-9]+)$/
Run Code Online (Sandbox Code Playgroud)

会匹配

234
Run Code Online (Sandbox Code Playgroud)

.56
Run Code Online (Sandbox Code Playgroud)

但不是

234.56
Run Code Online (Sandbox Code Playgroud)

而以下正则表达式

/^([0-9]+)?(\.[0-9]+)?$/
Run Code Online (Sandbox Code Playgroud)

将匹配上面的所有三个字符串,但它也将匹配我们不想要的空字符串.

我需要一些能匹配上面所有三个字符串的东西,但不是空字符串.有一个简单的方法吗?

更新:

安德鲁和贾斯汀的下面都是我提供的简化示例,但他们没有(除非我错了)为我希望解决的实际用例工作,所以我现在应该把它放进去.这是我正在使用的实际正则表达式:

/^\s*-?0*(?:[0-9]+|[0-9]{1,3}(?:,[0-9]{3})+)(?:\.[0-9]*)?(\s*|[A-Za-z_]*)*$/
Run Code Online (Sandbox Code Playgroud)

这将匹配

45
45.988
45,689
34,569,098,233
567,900.90
-9
-34 banana fries
0.56 points
Run Code Online (Sandbox Code Playgroud)

但它不会匹配

.56
Run Code Online (Sandbox Code Playgroud)

我需要它来做到这一点.

javascript regex

23
推荐指数
3
解决办法
3万
查看次数

标签 统计

javascript ×1

regex ×1