2011-10-18 48 views
-2

我需要一個正則表達式來我preg_match(),應該預浸(允許)以下字符:的preg_match一些字符

字符串只能包含字母,數字和以下標點符號:

  • 句號(。)
  • 逗號(,)
  • 破折號( - )
  • 下劃線(_)

我不知道,如何在正則表達式上完成,但我認爲有一種方法!

+3

如果只有一種方法可以瞭解有關preg語法的更多信息,請參見:P – Rijk

+0

是的,可以這樣做。請參閱http://www.php.net/manual/en/regexp.reference.character-classes.php或某些工具手冊http://stackoverflow.com/questions/32282/regex-testing-tools – mario

+2

看看我發現的:http://www.regular-expressions.info/ –

回答

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

將匹配只包含(Unicode)字母,數字或您提到的「特殊字符」的字符串。 [...]character class,意思是「這裏包含的一個字符」。你需要使用/u統一修改這個工作:

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

如果你只關心ASCII字母,很容易:

^[\w.,-]*$ 

,或者在PHP:

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