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

vsmadaxz  于 2023-05-08  发布在  其他
关注(0)|答案(4)|浏览(311)

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

ss2ws0br

ss2ws0br1#

做这件事有两种方法。
告诉变量是否包含允许范围内的任何一个字符 not。这是通过使用一个否定字符类[^...]来实现的:

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

另一种方法是确保字符串 * 中的每个字符都在允许的范围内:

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

hsvhsicv2#

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

juzqafwq3#

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

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

yws3nbqq

yws3nbqq4#

如果你不想使用正则表达式引擎,你可以用白名单中的字符来修剪字符串,然后检查字符串是否为空。
是的,trim()函数允许通过“yatta-yatta”点来表示字符范围。在Native PHP functions that allow double-dot range syntax上阅读更多信息。
代码:(Demo

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

相关问题