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:)看起来一切正常。。。谢谢你的指数运算!