Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex-允许使用PHP使用字母数字、逗号、句点和空格_Php_Regex - Fatal编程技术网

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()