2012-07-20 57 views
0


我有很大的字符串,我需要檢查,如果號碼顯示其是超過3
手段「一些字符串2」將是無效的,但「一些字符串3」,「一些string7滯留「將是正確的。用PHP正則表達式

+0

目前我正在使用[3-6],但我不想添加上限。 – Debugger 2012-07-20 07:07:23

+0

感謝used/Android [3-9]。* /,我正在使用它來檢測Android的版本,如果他們會改變命名約定,然後我搞砸了。 – Debugger 2012-07-20 07:10:05

+1

當他們發佈版本10時,這不起作用。請檢查我的答案。 – 2012-07-20 07:11:28

回答

3
preg_match('/some\s*string\s*([3-9][0-9]*|[1-9][0-9]+)/i', $haystack); 

這裏工作example

但是,檢查你的用例,這似乎是檢查在應用程序中描述的特定版本之後,我也勸你剛纔得到的數字出來的字符串,並將其與實際數量,以確保它比3大於或等於:

preg_match('/([0-9]+)/', $string, $matches); 
if ($matches[1] >= 3) { 
    // Do something 
} 
1

這是行不通的?

$numberBiggerThanThree = preg_match('/([0-9]{2,}|[3-9])/', 'some long string 3'); 
+1

兩位數字呢? – 2012-07-20 07:10:42

3

正則表達式用於文本匹配,而不是算術。合適的工作正確的工具...

preg_match('/([0-9]+)/', $string, $matches); 
if ($matches[1] >= 3) { 
    // Do something 
} 
+0

絕對比使用正則表達式更好的解決方案。 – 2012-07-20 07:16:28

1

你匹配一個單詞後跟一個可選的空間,那麼這個數大於2.由於您可以控制小數位:

(\w*\s*(?:[1-9]\d+|[3-9])) 

一些小例子(demo):

$subject = 'I have big string in that I need to check if number is present which is more than 3. 
Means "some string2" will be invalid , but "some string 3","some string7" will be correct.'; 

$pattern = '(\w*\s*(?:[1-9]\d+|[3-9]))'; 

$r = preg_match_all($pattern, $subject, $matches); 

var_dump($matches); 

輸出:

array(1) { 
    [0]=> 
    array(3) { 
    [0]=> 
    string(6) "than 3" 
    [1]=> 
    string(8) "string 3" 
    [2]=> 
    string(7) "string7" 
    } 
} 

我希望這是有幫助的。

1

我修改弗洛裏安的解決方案:

[a-z]+\s?[a-z]+\s?([1-9][0-9]+|[3-9]) 

http://regexr.com?31ja1

它適用於任何字符串,而不僅僅是「一些字符串」,它僅允許0或1的空白字符。

+0

好的補充。儘管如此,在檢查了他的用例之後,我也建議不要使用正則表達式。 – 2012-07-20 08:51:49