正则表达式字符过滤器

时间:2009-10-15 21:22:01

标签: php regex

在我的代码中,我使用的是一个regexp我在某处搜索,但我不明白。 :)

preg_match("/^[\p{L} 0-9\-]{4,25}$/", $login))

p{L}是什么意思?我知道它的作用 - 所有带有国家字母的人物都包括在内。

我的第二个问题,我想清理用户输入的游戏聊天,所以我从上面提到的正则表达式开始,但我想允许大多数特殊字符。最简单的方法是什么?有人已经准备好了正则表达式吗?

3 个答案:

答案 0 :(得分:1)

对于\ p,请参阅Unicode character properties,基本上它要求角色属于特定的角色类(字母,数字......)。

对于你的过滤器,它取决于你想要过滤的内容,但是看看Unicode字符类是我认为的好方法(单独添加任何对你有用的字符)。

答案 1 :(得分:0)

正则表达式意味着:

每个长度在4到25之间的字符串,以字母,空格,数字或短划线开头。

\ p {L}表示字面意思:与“L”属性匹配的字符,其中“L”代表“任何字母”。

了解正则表达式的工作原理:

http://en.wikipedia.org/wiki/Regular_expression

http://www.php.net/manual/en/regexp.reference.unicode.php

答案 2 :(得分:0)

如果您想要包含大多数字符,为什么不排除那些您不允许的字符呢?

您可以使用角色类中的^

来执行此操作
[^characters I don't want]

免责声明:黑名单可能不是最佳方法,具体取决于您尝试做什么,并且必须比白名单更彻底。