我发现许多地方的问题都解决了,但我不知道为什么它不适合我。
$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
}
字母数字工作正常但不允许使用逗号和空格。
答案 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 ,.]*$