请帮忙写个纯正则表式,除了指定几个数字段,其它的都匹配

2014-01-09 13:47:29 +08:00
 older
要求是:除了指定几个数字段,其它的都匹配。我指定的数
字如:2到9的数字,和10到12的数字。(这里的数字有时要改,可能会改为100到350等)
2285 次点击
所在节点    问与答
9 条回复
merlin852
2014-01-09 14:04:21 +08:00
正则主要是针对string处理
你这要求按数值比较,还会变动,还是用 > or < 比较好
正则针对2位以上的数值处理真的很弱
Mutoo
2014-01-09 14:39:42 +08:00
数字不多的话,可以全部列出来

2~9 11,12,13:

\b((11|12|13)?|[23456789])\b

原则,字符串长的放前面,用分组+惰性匹配,短的放后面。
Mutoo
2014-01-09 14:46:48 +08:00
@Mutoo 纠正一下,貌似不需要惰性匹配

\b((11|12|13|15)|[23456789])\b

> "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 105".match(/\b((11|12|13)|[23456789])\b/g)
["2", "3", "4", "5", "6", "7", "8", "9", "11", "12", "13"]
older
2014-01-09 15:38:51 +08:00
100到350 这样要写很长的吧
older
2014-01-09 15:39:24 +08:00
@Mutoo 100到350 这样要写很长的吧
binux
2014-01-09 15:46:36 +08:00
又一个X-Y问题?这压根就不是一个正则文法吧
Mutoo
2014-01-09 15:53:28 +08:00
@older 那样的话应该没办法纯正则了。

你应该用回调函数来处理,匹配所有数字,然后传入处理就行了,大部分语言都支持。

str.match(/\d+/g, function(n){
var num = parseInt(n);
// do something you want
});
liberize
2014-01-09 17:44:25 +08:00
楼主最好把应用场景说出来,应该有比用纯正则更好的方式
yinheli
2014-01-10 01:57:33 +08:00
最好是粘贴一些范例, 以及你需要得到的效果, 也好让大家测试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/96289

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX