php:验证字段是否以特定字符开头


php: validate if field starts with certain character

我正在wordpress上使用Contact Form 7插件来收集字段中输入的数据,现在我想使用这个整洁的扩展设置一些验证规则:http://code-tricks.com/contact-form-7-custom-validation-in-wordpress/
我想要的是在文本字段中只允许有一个单词(即没有空格),并且这个单词必须以字母"r"开头(不区分大小写)
我写了如下无空白规则:

//whitespace
if($name == 'WhiteSpace') {
    $WhiteSpace = $_POST['WhiteSpace'];
    if($WhiteSpace != '') {
        if (!preg_match('/'s/',$WhiteSpace)){
            $result['valid'] = true;
        } else {
            $result['valid'] = false;
            $result['reason'][$name] = 'Invalid Entry.';
        }
    }
}

是否可以将第二条规则也纳入其中?所以没有空格,单词必须以字母"r"开头?如有任何建议,我们将不胜感激!


编辑:似乎core1024的答案确实有效,但只有一个:

    //FirstField
    if($name == 'FirstField') {
        $FirstField = $_POST['FirstField'];
        if($FirstField != '') {
            if (!preg_match("/(^[^a]|'s)/i",$FirstField)){
                $result['valid'] = true;
            } else {
                $result['valid'] = false;
                $result['reason'][$name] = 'Invalid Entry.';
            }
        }
    }

//__________________________________________________________________________________________________
    //SecondField
    if($name == 'SecondField') {
        $SecondField = $_POST['SecondField'];
        if($SecondField != '') {
            if (!preg_match("/(^[^r]|'s)/i", $SecondField)) {
                $result['valid'] = true;
            } else {
                $result['valid'] = false;
                $result['reason'][$name] = 'Invalid Entry.';
            }
        }
    }

我想使用此代码两次,一次是验证一个字段上的第一个字符为a,另一个字段中的第一个字符串为r。但似乎只有SecondField验证规则在起作用。

尝试使用:

preg_match('/^r[^'s]*$/i',$WhiteSpace)

而不是:

!preg_match('/'s/',$WhiteSpace)

您需要这个:

if (!preg_match("/(^[^r]|'s)/i", $WhiteSpace)) {

它匹配任何不以r/r开头或不包含空格的字符串。这里有一个测试:

$test = array(
    'sad',
    'rad',
    'ra d'
);
foreach($test as $str) {
    echo '"'.$str.'" -&gt; '.preg_match('/(^[^r]|'s)/i', $str).'<br>';
}   

结果:

"sad" -> 1
"rad" -> 0
"ra d" -> 1