preg_match一些字符

时间:2011-10-18 12:39:35

标签: php regex preg-match

我需要一个正则表达式preg_match(),它应该preg(允许)以下字符:

字符串只能包含字母,数字和以下标点符号:

  • 句号(。)
  • 逗号(,)
  • 破折号( - )
  • 下划线(_)

我不知道,如何在正则表达式上完成,但我认为有办法!

1 个答案:

答案 0 :(得分:2)

^[\p{L}\p{N}.,_-]*$

将匹配仅包含(Unicode)字母,数字或您提到的“特殊字符”的字符串。 [...]character class,意思是“此处包含的其中一个字符”。您需要使用/u Unicode修饰符才能工作:

preg_match(`/^[\p{L}\p{N}.,_-]*$/u', $mystring);

如果你只关心ASCII字母,那就更容易了:

^[\w.,-]*$

或者,在PHP中:

preg_match(`/^[\w.,-]*$/', $mystring);