正则表达式 - 使用PHP允许使用字母数字,逗号,句点和空格

时间:2014-04-16 05:58:06

标签: php regex

我发现许多地方的问题都解决了,但我不知道为什么它不适合我。

$reg = '/^[a-zA-Z0-9,. ]*$/'; // regex to allow only alphanumeric, comma, period and space
$count = preg_match($reg, $arr[1], $matches); // verify regex
if($count > 0){
    $objArray[] = array($arr[0] => $arr[1]); // if regex allowed create Object array
}
else{
    //error code
}

字母数字工作正常但不允许使用逗号和空格。

3 个答案:

答案 0 :(得分:2)

您确定最后问题不是^*$吗?你的角色类是正确的,但你匹配的是“行首,然后是[a-zA-Z0-9,. ]的0或更多,然后是行的末尾”。

这意味着如果字符串中没有任何内容(0个或更多字符),它将匹配,但如果除了这些字符之外还有其他内容(因为它锚定在行的开头和结尾),它就会匹配。如果这真的是你想要知道的(如果除了这些字符之外还有其他内容),那么你可以像这样反转字符类,并删除^*$[^a-zA-Z0-9,. ]

否则(如果你想知道字符串是否包含任何这些字符),你应该删除除字符类之外的所有字符:'/[a-zA-Z0-9,. ]/'

答案 1 :(得分:1)

preg_match_all('/^[\w\s ,.]+$/', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
    # Matched text = $result[0][$i];
}

答案 2 :(得分:0)

尝试使用以下表达式

[a-zA-Z0-9\d ,.]*$