说我要求用户输入提供的某些单词,他/他只会在一个文本框中输入它,该文本框将被验证无论的顺序。我一直在寻找几个小时的答案我'卡住了:/
e.g。应该输入的词是:foo,bar,green。
即使订单 bar green foo 或 green foo bar
,我仍然可以匹配我非常了解正则表达式的基础知识,但我不知道如何匹配这种类型的条件。 任何答案将不胜感激!
答案 0 :(得分:4)
简单回答:不要使用正则表达式。
只需explode()
输入,然后手动检查单词是否正常。检查输入是否良好的简单方法是:
if(!array_diff(explode(' ', $input), $valid_words)) {
// input OK
}
答案 1 :(得分:3)
这将检查输入中是否有这三个单词,仅此而已:
/^(?=.*\bbar\b)(?=.*\bgreen\b)(?=.*\bfoo\b)(?:\s*\b\w+\b\s*){3}$/s
答案 2 :(得分:1)
http://sandbox.phpcode.eu/g/59c57
<?php
$str = 'foo, bar, green';
$array = explode(',', $str);
print_r($array);
答案 3 :(得分:0)
此正则表达式将检查输入中是否包含这些单词:
(?=^.*?foo.*$)(?=^.*?bar.*$)(?=^.*?green.*$)^.*$
但是它没有检查它是否没有其他东西。一般来说,我同意别人不要使用正则表达式来做这件事。拆分输入并检查字典。