1

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

^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 个十进制值,我完全迷失了我需要用原始模式弄清楚的内容。

我将不胜感激对代码中使用的模式的任何解释,因为我必须更新更多范围。

4

1 回答 1

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

您可以在这个工作演示中测试它们。

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

于 2012-11-11T20:57:41.117 回答