用户进行选择,我想测试选择是否有效。所以例如如何区分正则表达式值?
preg_match("/(test1/test2|test3)/", $value)
问题是,一个值是test1/test2
,但每个测试都被视为单个值。任何想法如何改变这个有test1/test2
作为一个单一的价值?
如:
test1/test2,
test3
用户进行选择,我想测试选择是否有效。所以例如如何区分正则表达式值?
preg_match("/(test1/test2|test3)/", $value)
问题是,一个值是test1/test2
,但每个测试都被视为单个值。任何想法如何改变这个有test1/test2
作为一个单一的价值?
如:
test1/test2,
test3
你真的需要这里的正则表达式?如何:
$value = 'test1';
$valid = in_array($value, array('test1', 'test2', 'test3'), true);
这似乎不太密集,但功能。
不确定关于php的正则表达式的具体情况,但我想如果你把它包装在括号中使它成为一个组,它可能会工作。
另外,如果你没有做任何事情更看中的不是你的榜样它可能只是更快/更容易看检查值是一个数组
为什么不使用in_array功能:
$array = array('test1/test2' 'test3');
if (in_array($value, $array))
{
//do something
}
最好使用strpos或其他字符串函数,除非实际上匹配模式。但是既然你已经问过了....
preg_match("/(?:test1\/test2)|(?:test3)/", $value)
你应该在'test1/test2'即ie中跳过'/'。 'preg_match(“/(test1 \/test2 | test3)/”,$ value)' – fardjad 2011-05-17 07:31:50
这根本不是很清楚,据我所知,不是一个有效的PHP正则表达式(非转义斜杠)。你能举一个输入文本,输出和期望输出(或有效/无效)的例子吗? 'test1/test2'在这里被捕获为单个值。 – Kobi 2011-05-17 07:32:16
缺乏清晰度的问题。 – 2011-05-17 08:33:55