Regex-允许使用PHP使用字母数字、逗号、句点和空格
我发现很多地方这样的问题都解决了,但我不知道为什么它对我不起作用Regex-允许使用PHP使用字母数字、逗号、句点和空格,php,regex,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]
$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
}
字母数字可以正常工作,但在允许句点时不允许逗号和空格。尝试使用以下表达式
[a-zA-Z0-9\d ,.]*$
您确定问题不是结尾处的
^
、*
和$
吗?您的字符类是正确的,但您要匹配的是“行的开头,然后是0或更多的[a-zA-Z0-9,.]
,然后是行的结尾”
这意味着,如果字符串中没有任何内容(0个或多个字符),它将匹配,但如果除了这些字符之外没有其他内容(因为它被锚定到行的开头和结尾),它将不匹配。如果这确实是您想要知道的(如果除了这些字符之外还有其他字符),那么您可以像这样反转字符类,并删除^
、*
和$
:[^a-zA-Z0-9,.]
否则(如果您想知道字符串是否包含这些字符中的任何一个),您应该删除除字符类以外的所有内容:'/[a-zA-Z0-9,.]/'
preg\u match\u all('/^[\w\s,.]+$/',$subject$result,preg\u PATTERN\u ORDER);
preg_match_all('/^[\w\s ,.]+$/', $subject, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[0]); $i++) {
# Matched text = $result[0][$i];
}
对于($i=0;$i
'/^[a-zA-Z0-9,\.\s]*$/'
试试看。@AmitGarg运气不好!同样的事情正在发生。我不认为句点需要转义,但无论如何,句点是允许的,但逗号和空格不允许。你能给出一个字符串不正确匹配的例子吗?我已经测试了'/^[a-zA-Z0-9,.]*$/'
并且工作正常。我认为您的字符串中可能有一些不可见的字符,如\n
。这允许使用所有字符,包括特殊字符。0-9和\d是一样的。请尝试使用此[^,.a-zA-Z0-9]*$来代替[^,.a-zA-Z0-9]*$仍然允许所有内容。[^a-zA-Z0-9,.]
甚至不允许使用单词。我想我需要^
,*
和$
好吧,把^
放进去会把它倒过来,这样你就可以做$count==0
。我从您上面的评论中看出,这不是您的问题。\w
也匹配下划线,您不需要在此处使用preg\u match\u all()
。