2011-06-01 31 views
3

我有一个独特的挑战。违反RegExp:每个小于或等于“001700”的字符串

我想创建一个自定义变量的谷歌分析过滤器,只有给定字符串小于或等于'001700'时才会返回一个值。是的,我知道一个字符串不能小,我仍然需要找到一种方法来完成这项工作。

哦,如果你问:没有没有办法将该字符串转换为数字(根据我的知识 - 通过谷歌分析过滤器 - 这是我必须在这种情况下工作)。

所以基本上,我有

000000 
000001 
000002 
000003 
... 
... 
999998 
999999 

,我需要匹配

001700 
001699 
001698 
... 
... 
000001 
000000 

,但确实比赛

001701 
001702 
... 
... 
999998 
999999 

子问题上)是一个正则表达式有可能吗?(据我所知,如果你很聪明和/或自虐足够,一切皆有可能)

子问题b)怎么办?

THX非常

回答

4

你可以这样做:

^00(1700|1[0-6][0-9]{2}|0[0-9]{3})$ 

See it

1

可以用正则表达式来完成:

/00(1([0-6][0-9]{2}|700)|0[0-9]{3})/ 

说明:其次

  • 1后面跟着0到6

    00和任意2号= 1000 - 1699

  • 0后跟任意3个数字= 0000 - 0999
1

是的,你可以做

see this article

如:

alert('your numericle string'.replace(/\d+/g, function(match) { 
    return parseInt(match,10) <= 17000 ? '*' : match; 
})); 

JavaScript调用我们的功能,通过 比赛进入我们的比赛的说法。 然后,我们返回星号 (如果匹配的数字在17000以下)或 匹配本身(即不匹配应发生 )。