【发布时间】:2014-05-27 21:58:03
【问题描述】:
对于喜欢正则表达式的人,我有一个很好的挑战;像我这样的。不幸的是,我无法弄清楚这一点。
这个正则表达式是一个反向匹配。我需要匹配除适量之外的所有东西;喜欢:
这些类型需要不匹配:
0,00
0.00
12314345.7
24234.54
34435,00
34545,43
这些类型需要 MATCH:
.00
,87
1e3,67
因此,除了带有逗号或点的小数之外的所有内容都需要在 JavaScript 中匹配(是的,反向)。
我做了这个:
([^0-9]+([^\.,]{0,1})+[^0-9]{0,2})
但是,很明显,它不能正常工作,因为它通过多个逗号或点,并且不会将小数限制为最多两位。
【问题讨论】:
-
你能提供一个示例输入和输出吗?
-
如果您愿意,可以在regexr.com 上进行测试,这就是“匹配”和“不匹配”可见的地方。
-
但是你为什么需要它呢?我想为有效模式制作正则表达式是相当简单的,任何不满足正则表达式的都是你的解决方案。还是只是为了挑战?
-
如果你可以分割一个字符(比如空格),那么:
s.split(/\s+/).filter(function(v) {return !/^\d+[\.,]\d\d$/.test(v)})可以完成这项工作(即过滤掉匹配项)。 -
@RobG 询问正则表达式应该运行的格式化输入。输入格式会影响正则表达式。例如在您编辑问题之前,您输入的是逐行值。
标签: javascript regex