2011-05-17 57 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)