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

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

2~9 11,12,13:

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

原则,字符串长的放前面,用分组+惰性匹配,短的放后面。
Mutoo
2014 年 1 月 9 日
@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 年 1 月 9 日
100到350 这样要写很长的吧
older
2014 年 1 月 9 日
@Mutoo 100到350 这样要写很长的吧
binux
2014 年 1 月 9 日
又一个X-Y问题?这压根就不是一个正则文法吧
Mutoo
2014 年 1 月 9 日
@older 那样的话应该没办法纯正则了。

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

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

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

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

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

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

© 2021 V2EX