检查字符串是否仅包含字母数字和点字符。

4

我需要检查一个变量是否包含除了a-zA-Z0-9.(句点)之外的任何内容。

4个回答

10

有两种方法可以实现。

判断变量中是否包含任何一个不在允许范围内的字符。这可以通过使用负字符类 [^...] 来实现:

preg_match('/[^a-zA-Z0-9\.]/', $your_variable);

另一个选择是确保字符串中的每个字符都在允许的范围内:

!preg_match('/^[a-zA-Z0-9\.]*$/', $your_variable);

8
if (preg_match('/[^A-Z\d.]/i', $var))
  print $var;

8
if (preg_match("/[^A-Za-z0-9.]/", $myVar)) {
   // make something
}

这里的关键点是在[]组中使用"^" - 它匹配除括号内字符以外的所有字符。


我认为这只会检测由未指定字符组成的字符串 - 最好使用/ [^A-Za-z0-9 \。]/。 - Tom Haigh
好多了。但我仍然建议使用/ [^A-Z\d.]/i,因为它更清晰,打字量更少。而且你不需要在字符类中转义“.”。 - PEZ

0

如果您不想使用正则表达式引擎,可以通过白名单字符来截取字符串,然后检查字符串是否为空。

是的,trim()函数允许通过“yatta-yatta”点表达字符范围。请在Native PHP functions that allow double-dot range syntax中了解更多信息。

代码:(Demo

if (ltrim($str, 'A..Za..z0..9.') !== '') {
    // all good
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接