我正在尝试用preg_match在PHP中验证输入字符串是否仅包含"a-z, A-Z, -, _ ,0-9"字符。 如果只包含这些字符,则验证。
我尝试在谷歌上搜索,但没有找到有用的信息。
有人能帮忙吗?
谢谢!
我正在尝试用preg_match在PHP中验证输入字符串是否仅包含"a-z, A-Z, -, _ ,0-9"字符。 如果只包含这些字符,则验证。
我尝试在谷歌上搜索,但没有找到有用的信息。
有人能帮忙吗?
谢谢!
如果空字符串也是有效的,请使用模式'/^[A-Za-z0-9_-]*$/'
。否则,请使用'/^[A-Za-z0-9_-]+$/'
因此:
$yourString = "blahblah";
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) {
#your string is good
}
同时,请注意,您希望将“-”放在字符类的最后作为字符类的一部分,这样它才会被读取为字面上的“-”,而不是两个字符之间的破折号(例如A-Z之间的连字号)。
$data = 'abc123-_';
echo preg_match('/^[\w|\-]+$/', $data); //match and output 1
$data = 'abc..';
echo preg_match('/^[\w|\-]+$/', $data); //not match and output 0
你可以使用 preg_replace($pattern, $replacement, $subject):
if (preg_replace('/[A-Za-z0-9\-\_]/', '', $string)) {
echo "Detect non valid character inside the string";
}
这个想法是移除任何有效的字符,如果结果不为空,则执行代码。