如果值是以下任何组合,我在检查 PHP 时遇到问题
a few examples:
我想我需要一个正则表达式,因为当给定字符串中包含除上述字符之外的其他字符时,我需要抛出错误。
您想要的模式类似于(在 rubular.com 上查看):
^[a-zA-Z0-9_.-]*$
解释:
^
$
[...]
*
请注意,文字破折号-是字符类定义中的最后一个字符,否则它具有不同的含义(即范围)。在.字符类定义之外也有不同的含义,但在内部,它只是一个字面量.
-
.
这是一个片段,展示了如何使用此模式:
<?php $arr = array( 'screen123.css', 'screen-new-file.css', 'screen_new.js', 'screen new file.css' ); foreach ($arr as $s) { if (preg_match('/^[\w.-]*$/', $s)) { print "$s is a match\n"; } else { print "$s is NO match!!!\n"; }; } ?>
上面的打印(如在 ideone.com 上看到的):
screen123.css is a match screen-new-file.css is a match screen_new.js is a match screen new file.css is NO match!!!
请注意,模式略有不同,请\w改为使用。这是“单词字符”的字符类。
\w
preg_match
这似乎符合您的规范,但请注意,这将匹配诸如.....等之类的内容,这可能是您想要的,也可能不是您想要的。如果您可以更具体地匹配您想要匹配的模式,那么正则表达式会稍微复杂一些。
.....
上面的正则表达式也匹配空字符串。如果您至少需要一个字符,请使用+(one-or-more) 而不是*(zero-or-more) 进行重复。
+
在任何情况下,您都可以进一步阐明您的规范(在询问正则表达式问题时总是有帮助),但希望您也可以根据上述信息学习如何自己编写模式。