允许RegEx以句点或减号开头

Allowing the RegEx to start with a period or minus sign

本文关键字:开头 句点 RegEx 允许      更新时间:2023-09-26

我花了几个小时来寻找解决方案。我有以下RegEx:

(?=.)^(([1-9][0-9]{0,8})|([0-9]))?('.[0-9]{1,2})?$

我想增加第一个字符匹配减号的能力,但仍然匹配所述RegEx的其余部分。

我需要这些来工作:.0.34-.34-30.0-33.03-34-2我需要这些失败:-040433.-34.33美元1234567890.23(任何非数字字符)

感谢您的帮助。

您可以使用以下正则表达式:

^-?(?:[1-9][0-9]{0,8}(?:'.[0-9]{1,2})?|'.[0-9]{1,2})$

RegEx演示

编辑:如果要允许0.45作为有效输入,请使用:

^-?(?:[1-9][0-9]{0,8}(?:'.[0-9]{1,2})?|0*'.[0-9]{1,2})$

在正确的位置添加可选的-?就可以了。

此外,我确信您不需要所有这些捕获组(请参阅此处的演示):

^-?(?=.)(?:[1-9][0-9]{0,8}|0)?(?:'.[0-9]{1,2})?$
^-?                   # optional leading -
(?=.)                 # followed by at least one character
(?:                   # non capturing group
    [1-9][0-9]{0,8}   # number without leading 0
|                     # or
    0                 # single 0
)?                    # integer part is optional
(?:'.[0-9]{1,2})?$    # decimal part

这应该适用于

^(?:-[1-9.]{1}[0-9]*|'.|0'.)'.?[0-9]{0,2}$

演示