0

我正在尝试创建一个正则表达式来检查自由形式的民俗系统提交的标签的值。这就是我现在所拥有的。

if (!preg_match('/([^-\\a-zA-Z0-9._@\'])+/',$proposedtag)) {
    //true, good
    return true;
} else {
    //false, bad characters
    return false;
}

我想允许:连字符、反斜杠、正斜杠、az、AZ、0-9、句点、下划线、at 符号和单引号,并禁止所有其他。

我很确定否定字符类是继续进行此操作的方法...

但是我上面的代码似乎允许其他字符(例如 +),我不知道为什么。另外作为旁注,我不确定我是否确保我不会无意中允许 SQL 注入。有小费吗?

4

1 回答 1

2

我相信你的角色类中的反斜杠字符是一个逃避问题。试试这个,它似乎在我喂它的测试中效果更好。注意反斜杠上的双重转义(我移到了最后):

if (!preg_match('/([^\-a-zA-Z0-9._@\'\\\\])+/',$proposedtag)) {
于 2009-08-07T23:24:53.383 回答