在正则表达式中,我需要知道如何匹配一个或另一个,或两者(按顺序).但至少有一件事需要存在.
例如,以下正则表达式
/^([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)
我需要它来做到这一点.