8

我正在尝试使用 preg_match 在 PHP 中验证输入字符串仅包含“az、AZ、-、_ ,0-9”字符。如果它只包含这些,则验证。

我试图在谷歌上搜索,但我找不到任何有用的东西。

有人可以帮忙吗?

谢谢 !

4

3 回答 3

4

'/^[A-Za-z0-9_-]*$/'如果空字符串也有效,请使用模式。否则'/^[A-Za-z0-9_-]+$/'

所以:

$yourString = "blahblah";
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) {
    #your string is good
}

另外,请注意,您希望在字符类的最后放置一个“-”作为字符类的一部分,这样它就会被读取为文字“-”,而不是两个字符之间的破折号,例如 AZ 之间的连字符。

于 2012-12-27T15:12:04.737 回答
0
$data = 'abc123-_';
echo preg_match('/^[\w|\-]+$/', $data); //match and output 1

$data = 'abc..';
echo preg_match('/^[\w|\-]+$/', $data); //not match and output 0
于 2012-12-27T15:18:45.237 回答
0

您可以使用 preg_replace($pattern, $replacement, $subject):

if (preg_replace('/[A-Za-z0-9\-\_]/', '', $string)) {
  echo "Detect non valid character inside the string";
}

这个想法是删除任何有效的字符,如果结果不为空,则执行代码。

于 2018-07-05T12:08:13.650 回答