【发布时间】:2016-05-02 13:36:29
【问题描述】:
好吧,我卡住了,我找不到正则表达式提供给 PHP preg_match 的正确格式。
我有两个字符串。说"mdo" 和"o",但它们可能是随机的。
我有一本允许使用的字符和字符串的字典。
例如,允许的字符为"a-gm0-9",允许的字符串为"do" 和"si"。
目标
我正在尝试检查输入字符串不包含任何字符或字符串,但不包含字典中的字符或字符串,不区分大小写。
所以"mdo" 的大小写不匹配,因为m 像字符串do 一样被允许。与 o 不同,它的 o 不是允许的字符并且不包含整个允许的字符串 do。
我挣扎的理由
可以否定[^a-gm0-9] 和(?!do|si),但我无法实现的是把它们放在一个正则表达式中以便应用以下PHP 代码:
<?php
$inputStr = 'mdo';
$rex = '/?????/i'; // the question subject
// if disallowed chars/strings are found...
if( preg_match($regex, $inputStr) == 1 )
return false; // the $inputStr is not valid
return true;
?>
因为两个级联 preg_matches 会破坏逻辑并且不起作用。
如何在单个正则表达式中混合使用“AND”中的字符检查和组检查?他们的位置无关紧要。
【问题讨论】:
-
检查允许的字符和子字符串以及在 if 条件中否定 preg_match 函数本身更简单。
-
主要问题(我认为)是“do”和“si”都包含不允许的字符......
标签: php preg-match pcre regex-negation