我有一个字符串,需要检查几个字符。我可以用做到这一点strpos();
。但是在这种情况下,我将需要使用strpose();
多次。像这样的东西:
$str = 'this is a test';
if(
strpos($str, "-") === false &&
strpos($str, "_") === false &&
strpos($str, "@") === false &&
strpos($str, "/") === false &&
strpos($str, "'") === false &&
strpos($str, "]") === false &&
strpos($str, "[") === false &&
strpos($str, "#") === false &&
strpos($str, "&") === false &&
strpos($str, "*") === false &&
strpos($str, "^") === false &&
strpos($str, "!") === false &&
strpos($str, "?") === false &&
strpos($str, "{") === false &&
strpos($str, "}") === false
)
{ do stuff }
现在我想知道,是否可以使用aregex
来定义我的条件摘要?
编辑:这是一些示例:
$str = 'foo' ----I want this output---> true
$str = 'foo!' -------------------------> false
$str = '}foo' -------------------------> false
$str = 'foo*bar' -------------------------> false
等等。换句话说,我只想要文字字元:abcdefghi...
。
使用否定的前瞻性断言。
if (preg_match("~^(?!.*?[-_^?}{\]\[/'@*&#])~", $str) ){
// do stuff
}
仅当字符串不包含任何上述字符时,这才会在花括号内进行操作。
如果您希望字符串仅包含单词字符和空格。
if (preg_match("~^[\w\h]+$~", $str)){
// do stuff
}
或者
AS @Reizer提及,
if(preg_match("~^[^_@/'\]\[#&*^!?}{-]*$~", $str)){
如果您不想匹配一个空字符串,请将上面的*
(在字符类旁边的)替换为+
。
仅适用于字母和空格。
if(preg_match("~^[a-z\h]+$~i", $str) ){
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句