为什么这个正则表达式什么也找不到? x00-xFF
Why does this regular expression find nothing? x00-xFF
我正在阅读此程序更新以查看新内容,突然我看到了这个东西:
if( preg_match("/[\xE0-\xFF][\x80-\xFF][\x80-\xFF]/", $variablino_namerino) )
{
//do stuff
}
我立即用谷歌搜索 preg_match 并发现了这个编程技术的奇妙分支,它用我从未听说过的正则表达式创造了奇迹。观看了几个视频并阅读了一些文档。然后我开始解决这个问题并了解到 E0 和 FF 之间存在的值可能不存在,所以我更改了这个表达式以便它总能找到一些东西:
if( preg_match("/[\x00-\xFF][\x00-\xFF][\x00-\xFF]/", $variablino_namerino) )
{
//do stuff
}
实际上并没有! So i thought this was the problem,但在我将语句更改为:
后它开始工作
if( preg_match("/[\x01-\xFF][\x01-\xFF][\x01-\xFF]/", $variablino_namerino) )
{
//do stuff
}
这里x01还是控制符吧?另外,该网站采用 UTF-8 格式。
所以你不能在范围内包含 x00 是因为它是 NULL 值还是不同?
一个解决方案是在声明正则表达式时加倍反斜杠或使用单引号:
if( preg_match('/[\x00-\xFF][\x00-\xFF][\x00-\xFF]/', 'text') ) {
//do stuff
}
当使用单引号时,\x
符号被视为 \x
并且由正则表达式引擎正确处理。
[^\x00-\x7F]
我发现类似这样的东西需要 x00。
我居然用它来检测特殊字符
我正在阅读此程序更新以查看新内容,突然我看到了这个东西:
if( preg_match("/[\xE0-\xFF][\x80-\xFF][\x80-\xFF]/", $variablino_namerino) )
{
//do stuff
}
我立即用谷歌搜索 preg_match 并发现了这个编程技术的奇妙分支,它用我从未听说过的正则表达式创造了奇迹。观看了几个视频并阅读了一些文档。然后我开始解决这个问题并了解到 E0 和 FF 之间存在的值可能不存在,所以我更改了这个表达式以便它总能找到一些东西:
if( preg_match("/[\x00-\xFF][\x00-\xFF][\x00-\xFF]/", $variablino_namerino) )
{
//do stuff
}
实际上并没有! So i thought this was the problem,但在我将语句更改为:
后它开始工作 if( preg_match("/[\x01-\xFF][\x01-\xFF][\x01-\xFF]/", $variablino_namerino) )
{
//do stuff
}
这里x01还是控制符吧?另外,该网站采用 UTF-8 格式。
所以你不能在范围内包含 x00 是因为它是 NULL 值还是不同?
一个解决方案是在声明正则表达式时加倍反斜杠或使用单引号:
if( preg_match('/[\x00-\xFF][\x00-\xFF][\x00-\xFF]/', 'text') ) {
//do stuff
}
当使用单引号时,\x
符号被视为 \x
并且由正则表达式引擎正确处理。
[^\x00-\x7F]
我发现类似这样的东西需要 x00。 我居然用它来检测特殊字符