Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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
Php 如果这个正则表达式有4位数字,是否可以修改为与字符串不匹配?_Php_Regex - Fatal编程技术网

Php 如果这个正则表达式有4位数字,是否可以修改为与字符串不匹配?

Php 如果这个正则表达式有4位数字,是否可以修改为与字符串不匹配?,php,regex,Php,Regex,我使用下面的正则表达式来匹配@username字符串(类似于twitter的用户名匹配系统) (? 这段代码对我来说非常有效,但想排除一种特定情况:如果匹配的字符串是一组4位数字。只有4位数字。如果有3位或5位数字,那么它应该像现在一样继续匹配 例如: @8500您可以使用{min,max}语法指定正则表达式令牌的最小/最大匹配数,因此您可以使用类似这样的代码段来匹配1-3位或5位或更多位(\d),并由非数字字符(\d)包围: 您可以使用{min,max}语法指定正则表达式令牌的最小/最大匹配数

我使用下面的正则表达式来匹配@username字符串(类似于twitter的用户名匹配系统)

(?
这段代码对我来说非常有效,但想排除一种特定情况:如果匹配的字符串是一组4位数字。只有4位数字。如果有3位或5位数字,那么它应该像现在一样继续匹配

例如:


@8500您可以使用
{min,max}
语法指定正则表达式令牌的最小/最大匹配数,因此您可以使用类似这样的代码段来匹配1-3位或5位或更多位(
\d
),并由非数字字符(
\d
)包围:


您可以使用
{min,max}
语法指定正则表达式令牌的最小/最大匹配数,因此您可以使用这样的代码段来匹配1-3位或5位或更多位(
\d
),并由非数字字符(
\d
)包围:


使用负前瞻
(?!…)
,可以检查以下模式在当前位置是否不匹配:

(?<![\w@])@(?!\d\d\d\d\b)([\w@]+(?:[.!][\w@]+)*)

使用负前瞻
(?!…)
,可以检查以下模式在当前位置是否不匹配:

(?<![\w@])@(?!\d\d\d\d\b)([\w@]+(?:[.!][\w@]+)*)

如果((strlen($string)!=4)| |(is_int($string)==false))如果((strlen($string)!=4)| |(is_int($string)==false))我想你搞定了。谢谢!我想你搞定了。谢谢!
/\D*(\d{1,3}|\d{5,})\D*/
(?<![\w@])@(?!\d\d\d\d\b)([\w@]+(?:[.!][\w@]+)*)
<?php

function test($test) {
    $pattern = '/(?<![\w@])@(?!\d\d\d\d\b)([\w@]+(?:[.!][\w@]+)*)/';
    echo (preg_match($pattern, $test) ? 'Matches' : 'No match') . "\n";
}

test('Hello @test world'); // Matches
test('Hello @123 world'); // Matches
test('Hello @1234 world'); // No match
test('Hello @12345 world'); // Matches
test('Hello @test1234 world'); // Matches
test('Hello @1234test world'); // Matches
test('Hello @1234-test world'); // No match
test('Hello @1234_test world'); // Matches