2011-05-17 69 views
-1

用戶進行選擇,我想測試選擇是否有效。所以例如如何區分正則表達式值?

preg_match("/(test1/test2|test3)/", $value) 

問題是,一個值是test1/test2,但每個測試都被視爲單個值。任何想法如何改變這個有test1/test2作爲一個單一的價值?

如:

test1/test2, 
test3 
+2

你應該在'test1/test2'即ie中跳過'/'。 'preg_match(「/(test1 \/test2 | test3)/」,$ value)' – fardjad 2011-05-17 07:31:50

+4

這根本不是很清楚,據我所知,不是一個有效的PHP正則表達式(非轉義斜槓)。你能舉一個輸入文本,輸出和期望輸出(或有效/無效)的例子嗎? 'test1/test2'在這裏被捕獲爲單個值。 – Kobi 2011-05-17 07:32:16

+0

缺乏清晰度的問題。 – 2011-05-17 08:33:55

回答

2

你真的需要這裏的正則表達式?如何:

$value = 'test1'; 
$valid = in_array($value, array('test1', 'test2', 'test3'), true); 

這似乎不太密集,但功能。

0

不確定關於php的正則表達式的具體情況,但我想如果你把它包裝在括號中使它成爲一個組,它可能會工作。

另外,如果你沒有做任何事情更看中的不是你的榜樣它可能只是更快/更容易看檢查值是一個數組

1

爲什麼不使用in_array功能:

$array = array('test1/test2' 'test3'); 

if (in_array($value, $array)) 
{ 
    //do something 
} 
0

最好使用strpos或其他字符串函數,除非實際上匹配模式。但是既然你已經問過了....

preg_match("/(?:test1\/test2)|(?:test3)/", $value)