正则表达式仅允许字母数字、逗号、连字符、下划线和分号。
- 论坛
- 正则表达式仅允许字母数字、逗号、连字符、下划线和分号。
9 浏览
正则表达式仅允许字母数字、逗号、连字符、下划线和分号。
我已经有一点工作代码了,但我需要有人帮助解释它为什么能够工作!我正在使用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, ',' ); }
谢谢任何帮助 🙂