使用preg_match()匹配多行的PHP验证

时间:2015-05-07 10:06:53

标签: regex preg-match

我有以下代码片段,我希望匹配用户提供的输入以匹配正则表达式中指定的任何其他输入。一切都工作正常但是\ n部分,我想允许多行。特别是这不起作用。

if(preg_match("/[^A-Za-z0-9., \/-\n]/", $addr))
    {
    echo "Invalid user input  ";
    exit;
    }

我收到了消息

Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 17 in ......

朋友告诉我如何在这里允许多行。

2 个答案:

答案 0 :(得分:0)

您可以在正则表达式中使用m(多行)修饰符。

preg_match("/[^A-Za-z0-9., \/-]/m", $addr)
                                ^

答案 1 :(得分:0)

你应该使用

[^A-Za-z0-9., \/\n-]

-之前\n创建无效范围( - 文字范围无序问题)。

如果您想允许多行,只需删除\n

[^A-Za-z0-9., \/-]