我正在尝试复制在代码中使用此模式匹配的函数
^1000([.][0]{1,3})?$|^\d{1,3}$|^\d{1,3}([.]\d{1,3})$|^([.]\d{1,3})$
此正则表达式允许从0到1000的数字,但
也是如此\b([0-9]{1,3}|1000)\b
然而,对于更新,我需要允许-1000到1000的负值以及范围内的2个十进制值,并且我完全迷失了我需要用原始模式解决的问题。
我很感激代码中使用的模式的任何解释,因为我需要更新更多的范围。
答案 0 :(得分:0)
两个正则表达式之间存在一些差异。事实上,原始的数字要求数字是字符串中的所有内容。第二个将在字符串中找到任何单独的数字。例如:
1000.00 USD
第一个正则表达式根本不匹配,尽管数字是指定的格式,因为$
锚点不匹配。第二个正则表达式将匹配,但仅匹配1000
。
现在,根据您是否只想匹配完整字符串或子字符串,这可能正是您所寻找的:
^-?(?:\d{1,3}(?:[.]\d{1,2})?|1000(?:[.]0{1,2})?)$
或
\b-?(?:\d{1,3}(?:[.]\d{1,2})?|1000(?:[.]0{1,2})?)\b
您可以在this working demo中测试它们。
演示中还显示的主要警告是允许前导零。