Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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
正则表达式:除某个字符外的所有ASCII字符(PHP、FILTER\u VALIDATE\u REGEXP)_Php_Regex_Filter - Fatal编程技术网

正则表达式:除某个字符外的所有ASCII字符(PHP、FILTER\u VALIDATE\u REGEXP)

正则表达式:除某个字符外的所有ASCII字符(PHP、FILTER\u VALIDATE\u REGEXP),php,regex,filter,Php,Regex,Filter,找到以下与所有可打印ASCII字符匹配的好正则表达式: [ -~] 我的代码如下所示: $string = "My ASCII string is (not) very funny."; filter_var($string, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[ -~]*$/"))); (?=[ -~])[^:] 这几乎是我需要的,但是我想排除冒号。我尝试了[-~\

找到以下与所有可打印ASCII字符匹配的好正则表达式:

[ -~]
我的代码如下所示:

    $string = "My ASCII string is (not) very funny.";

    filter_var($string, FILTER_VALIDATE_REGEXP,
    array("options"=>array("regexp"=>"/^[ -~]*$/")));
(?=[ -~])[^:]

这几乎是我需要的,但是我想排除冒号。我尝试了
[-~\:]
[-~^::::
,但都不起作用。什么是正确的正则表达式以及如何正确排除单个字符?

看起来您正在寻找这样的正则表达式:

    $string = "My ASCII string is (not) very funny.";

    filter_var($string, FILTER_VALIDATE_REGEXP,
    array("options"=>array("regexp"=>"/^[ -~]*$/")));
(?=[ -~])[^:]
您还可以通过将分号添加到“排除列表”来排除分号:


您的字符串没有
。A
是冒号,
是分号。你想允许哪一个?那
[:ascii:]
呢?(我以前也没有将regexs与
filter\u var
一起使用过,我通常使用
preg\u
函数。)@chris:是的,对,我是说冒号对不起。让我确定我明白你想要什么。如果有冒号(:)或任何非ascii字符,则希望验证为false,不是吗?如果我有任何冒号或任何不可打印的ascii字符或任何其他字符,则希望验证为false。Nicael已经回答正确了。好的,正确。我在谷歌上查看了一些解决方案,但这似乎是正确的排除方法。我的结果是:^((?=[-~]][^:])*$尽管如此,它并没有效率。你可以只指定2个范围:(参见)。@Stribizev:在我的例子中,效率并不重要,但是thx指出了这一点