如何使用正则表达式从non-ASCII
字符串中提取主题标签?
例如:
$str = #Hello #سلام #hello-again #سلام_دوباره #hello_again
我不会接受包含在主题标签中的! @ $ % ^ ♫ ►
这样的不良字符。
我尝试了这个,但它接受了不好的字符:
preg_match_all('/#([^\s]+)/', $str, $matches);
它接受#►☻
答案 0 :(得分:2)
您可以使用以下正则表达式:
'/#([\w-]+)/u'
见regex demo。 /u
修饰符将允许处理Unicode符号,\w
将匹配Unicode字母。
正则表达式分解:
#
- #
符号([\w-]+)
- 一个或多个字母,数字,下划线或连字符。请参阅IDEONE demo