使用正则表达式从非ASCII字符串中提取主题标签

时间:2015-11-10 13:26:37

标签: php regex

如何使用正则表达式从non-ASCII字符串中提取主题标签?

例如:

$str = #Hello #سلام #hello-again #سلام_دوباره #hello_again

我不会接受包含在主题标签中的! @ $ % ^ ♫ ►这样的不良字符。

我尝试了这个,但它接受了不好的字符:

preg_match_all('/#([^\s]+)/', $str, $matches);

它接受#►☻

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

'/#([\w-]+)/u'

regex demo/u修饰符将允许处理Unicode符号,\w将匹配Unicode字母。

正则表达式分解:

  • # - #符号
  • ([\w-]+) - 一个或多个字母,数字,下划线或连字符。

请参阅IDEONE demo