使用preg_match在PHP中验证字符串

8

我正在尝试用preg_match在PHP中验证输入字符串是否仅包含"a-z, A-Z, -, _ ,0-9"字符。 如果只包含这些字符,则验证。

我尝试在谷歌上搜索,但没有找到有用的信息。

有人能帮忙吗?

谢谢!


3
谁给我的问题点了踩? - NVG
3个回答

4

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

因此:

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

同时,请注意,您希望将“-”放在字符类的最后作为字符类的一部分,这样它才会被读取为字面上的“-”,而不是两个字符之间的破折号(例如A-Z之间的连字号)。


1
如果“preg_match('/ ^ [A-Za-z0-9_-] * $ /',$yourString”返回0,即不匹配,会发生什么?你仍然会验证它,对吗? - NVG
很好的澄清。我编辑了这个例子。这样,如果preg_match不是0或FALSE,你就可以继续了。 - DWright

0
$data = 'abc123-_';
echo preg_match('/^[\w|\-]+$/', $data); //match and output 1

$data = 'abc..';
echo preg_match('/^[\w|\-]+$/', $data); //not match and output 0

0

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

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

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


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