1

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

  1. [size=80]Hello world[/size]=> 有效
  2. [size=200]Hello world[/size]=> 有效
  3. [size=201]Hello world[/size]=> 无效

这是目前我被输入 gsub 方法的内容,它接受 1-999 之间的任何内容:

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

1 回答 1

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
于 2012-08-07T18:14:03.963 回答