正则表达式:除某个字符外的所有ASCII字符(PHP、FILTER\u VALIDATE\u REGEXP)
找到以下与所有可打印ASCII字符匹配的好正则表达式:正则表达式:除某个字符外的所有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"=>"/^[ -~]*$/"))); (?=[ -~])[^:] 这几乎是我需要的,但是我想排除冒号。我尝试了[-~\
[ -~]
我的代码如下所示:
$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指出了这一点