正则表达式仅允许字母数字、逗号、连字符、下划线和分号
2022-08-30 21:01:27
我已经有一些工作代码,但我需要有人帮助解释为什么它可以工作,如果他们可以的话!
我正在使用PHP替换字符串中的任何内容,如果它不是a-z,A-Z,0-9,逗号,分号,下划线或连字符(最终应该表示单个用户名或逗号/分号分隔的用户名列表)。
以下工作原理:
$data = preg_replace('/[^,;a-zA-Z0-9_-]/s', '', $data);
但以下情况并非如此:
$data = preg_replace('/[^a-zA-Z0-9_-,;]/s', '', $data);
为什么这只在逗号和分号在开头时才有效?把它们放在最后似乎会破坏事情(这是我最初遇到/[^a-zA-Z0-9_-]/s时尝试的。
顺便说一句,我还使用以下方法来修剪任何尾随分号(复数)或逗号(复数),有人可能会建议一种更有效和/或更优雅的方法来做到这一点?
if(preg_match('/;$/', $data))
{
$data = rtrim($data, ';' );
}
if(preg_match('/,$/', $data))
{
$data = rtrim($data, ',' );
}
感谢您的任何帮助:)