正则表达式允许在一个范围内从负到正的数字范围并允许2位小数

时间:2012-11-11 20:49:34

标签: jquery regex

我正在尝试复制在代码中使用此模式匹配的函数

^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个十进制值,并且我完全迷失了我需要用原始模式解决的问题。

我很感激代码中使用的模式的任何解释,因为我需要更新更多的范围。

1 个答案:

答案 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中测试它们。

演示中还显示的主要警告是允许前导零。