Ruby编号范围正则表达式在1-200之间

时间:2012-08-07 18:10:05

标签: ruby regex range gsub

我正在尝试使用1-200之间的gsub函数实现一个数字范围,但我找不到任何好的例子。我正在实施一个bbcode系统,用户应该可以输入类似

的内容
  1. [size=80]Hello world[/size] =>有效
  2. [size=200]Hello world[/size] =>有效
  3. [size=201]Hello world[/size] =>无效
  4. 这是我目前被纳入gsub方法的东西,它接受1-999之间的任何东西:

    \[size=(\d{1,3})\](.+?)\[\/size\]
    

1 个答案:

答案 0 :(得分:2)

试试这个:/\[size=(?:200|1\d{2}|[1-9]\d?)\](.+?)\[\/size\]/

我的测试程序:

if '[size=80]Hello world[/size]' =~ /\[size=(?:200|1\d{2}|[1-9]\d?)\](.+?)\[\/size\]/ 
    puts 'valid'
else    
    puts 'invalid'
end        

if '[size=200]Hello world[/size]' =~ /\[size=(?:200|1\d{2}|[1-9]\d?)\](.+?)\[\/size\]/     
    puts 'valid'
else    
    puts 'invalid'
end          

if '[size=201]Hello world[/size]' =~ /\[size=(?:200|1\d{2}|[1-9]\d?)\](.+?)\[\/size\]/     
    puts 'valid'
else    
    puts 'invalid'
end                  

输出:

valid
valid
invalid