Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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 preg_匹配以捕获除某些选项之外的所有选项_Php_Regex_Preg Match - Fatal编程技术网

PHP preg_匹配以捕获除某些选项之外的所有选项

PHP preg_匹配以捕获除某些选项之外的所有选项,php,regex,preg-match,Php,Regex,Preg Match,我需要使用什么正则表达式来实现以下目标: 检查字符串是否不包含一个或多个选项。。。我尝试了很多表达方式。 我认为这是最接近正确的一个 /^[^(256K)]$|^[^(2M)]$/ 我想让preg_match告诉我是否有256K或2M以外的任何东西,我不能否定preg_match(!preg_match),原因需要很长时间才能解释;) 您不能将整个单词或捕获组放在中。字符类匹配字符集中的任何一个字符 正则表达式匹配字符串的开头,除了:(,2,5,6,K,))之外的任何字符,后跟字符串的结尾,或

我需要使用什么正则表达式来实现以下目标:

检查字符串是否不包含一个或多个选项。。。我尝试了很多表达方式。 我认为这是最接近正确的一个

/^[^(256K)]$|^[^(2M)]$/

我想让preg_match告诉我是否有256K或2M以外的任何东西,我不能否定preg_match(!preg_match),原因需要很长时间才能解释;)

您不能将整个单词或捕获组放在中。字符类匹配字符集中的任何一个字符

正则表达式匹配字符串的开头,除了:
2
5
6
K
)之外的任何字符,后跟字符串的结尾,字符串的开头,除了:
2
M
)之外的任何字符
,后跟字符串结尾

我相信你想要的是一个消极的展望

/^((?!256K|2M).)*$/i
正则表达式:

^               # the beginning of the string
(               # group and capture to \1 (0 or more times)
(?!             # look ahead to see if there is not:
  256K          # '256K'
 |              # OR
  2M            # '2M'
)               # end of look-ahead
.               # any character except \n
)*              # end of \1 
$               # before an optional \n, and the end of the string

是的,我不会假装正则表达式是我最强的卡片;)请让我知道我在做什么wrong@RonnieJespersen更好的问题是:“你做得对吗?”你的正则表达式只是一个很大的语法错误;)我一定会仔细阅读那些讨厌的regex的。。。我只需要一个快速的回答。:)嗨@hwnd我正在尝试你的正则表达式,但我没有得到我想要的结果/^((?!256K | 10M)。*$/(我刚把2改为10)在一场预赛中给了我两个结果。“10m”和“m”。测试的字符串为“10m”。如果256K或10M是字符串本身,我需要它不给出结果。@RonnieJespersen您的正则表达式似乎区分大小写。如果你想让它不区分大小写,你必须使用
/i
开关…谢谢@hwnd:)看起来一切正常。。。谢谢你的指数运算!