使用正则表达式允许一些特殊字符

时间:2011-09-21 16:28:20

标签: php regex

以下正则表达式匹配任何 Unicode字母 + Unicode数字 + 元音符号 + + 短划线 + 下划线 + 空间

/^[\w\pN\pL\pM .-]+$/u

成功运作。

我想编辑我的正则表达式,因此它接受以下内容:

? ! ( ) % @ # , + - : newline

-代表负号。

我的尝试不起作用:

/^[\w\pN\pL\pM .-**?!()%@#,+-:\r**]+$/u

这是我最新尝试的片段:

if(preg_match('/^[\w\pN\pL\pM .-?!()%@#,+-:\r]+$/u', $_POST['txtarea_msg']))

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

-是字符类中的元字符,所以你要说:

blahblahblah从.? blahblahblah的所有角色+:所有角色等等等等等等

需要使用\ blahblah .\-? blahblah +\-: blahblah

进行转义

答案 1 :(得分:1)

/^[\w\pN\pL\pM \?!\(\)%@#,\+\-:\n\r]+$/u应该这样做。

答案 2 :(得分:-1)

其中一些是正则表达式字符,因此您需要转义它们:

/^[\w\pN\pL\pM .?!()%@#,+\-:\r]+$/u

另请注意换行符(\n)和回车符(\r)之间的区别。