正则表达式,检测正确的字符

时间:2016-10-13 12:05:11

标签: php regex expression whitespace

我创建了这个函数,允许我发送一个字符串作为参数,然后我可以选择更好的id来检查英语,瑞典语或数字。如果它包含任何内容,但接受的字符函数将返回false,否则返回true。

示例:

$text = 'I like pancakes';  //This should return as true
if(isCharValid($text, 'english')) {
   die('returned as true');
}
else {
   die('returned as false');
}

但是,我在使正则表达式检测到Id喜欢检测的内容时遇到问题,您可以在代码中的注释中看到我想要检测到的内容。

这是我的功能

function isCharValid($string, $type){ 
    if($type == 'english') { //String may contain A-Z, a-z, 0-9 and whitespace
        return !preg_match('/[^A-Za-z0-9\s]/', $string);
    }
    else if($type == 'swedish'){ //String may contain A-Ö,a-ö,0-9 and whitespace
        return !preg_match('/[^A-Za-z0-9åäöÅÄÖ\s]/', $string);
    }
    else if($type == 'number'){ //String may contain numbers 0-9, no WHITESPACES
        return !preg_match('/[^0-9]*$/', $string);
    }
    else {
        return false;
    }
}

2 个答案:

答案 0 :(得分:0)

您可能要求整个字符串应包含这些字符,方法是将模式用^ / $括起来,并将+量词添加到正字符类

function isCharValid($string, $type){ 
    if($type == 'english') { //String may contain A-Z, a-z, 0-9 and whitespace
        return preg_match('/^[A-Za-z0-9\s]+$/u', $string);
    }
    else if($type == 'swedish'){ //String may contain A-Ö,a-ö,0-9 and whitespace
        return preg_match('/^[A-Za-z0-9åäöÅÄÖ\s]+$/u', $string);
    }
    else if($type == 'number'){ //String may contain numbers 0-9, no WHITESPACES
        return preg_match('/^[0-9]+$/Du', $string);
    }
    else {
        return false;
    }
}

然后,使用

$text = 'I like pancakes';  //This should return as true
$type = "english";
if(isCharValid($text, $type)) {
   die(returned as true);
}
else {
   die(returned as false);
}

请注意,最好将/D修饰符添加到最后一个数字正则表达式,以确保包含数字的字符串和末尾的换行符LF符号不匹配。

答案 1 :(得分:0)

致电:isCharValid($text,$type)

而不是isCharValid($text)