Regexp匹配#和点状字符之间的所有内容

Regexp匹配#和点状字符之间的所有内容,regex,actionscript-3,Regex,Actionscript 3,我需要提取#和空格或任何点状字符(,;:-)之间的所有内容 这就是我目前所拥有的 var str = "#hello. foo bar" var filter:RegExp = /#(.*?)(!.,?;:_-)/g; var matches:Object = filter.exec(str); if(matches != null){ trace("Found: "+matches[1]) } else { trace("nothing found") } 只有当单词是“你好”时,它才

我需要提取
#
和空格或任何点状字符(
,;:-
)之间的所有内容 这就是我目前所拥有的

var str = "#hello. foo bar"
var filter:RegExp = /#(.*?)(!.,?;:_-)/g;
var matches:Object = filter.exec(str);

if(matches != null){
trace("Found: "+matches[1])
} else {
trace("nothing found")  
}
只有当单词是“你好”时,它才起作用我猜这部分是错的

#(.*?)[!.,?;:_-]
您需要的是
字符类
[]

[!,?;:-]匹配下表中的单个字符

     `!.,?;:_- a single character in the list !.,?;:_- literally`
此示例将利用
[^]
字符组,这将匹配不在该组中的任何字符。这允许您简单地说出任何不在列表中的字符

#([^[\., -\/#!$%\^&\*;:{}=\-_`~()]+)


var str = "#hello. foo bar";
var filter = RegExp = /#([^[\., -\/#!$%\^&\*;:{}=\-_`~()]+)/g;
var matches = Object = filter.exec(str);

if (matches !== null) {
    console.log("Found: " + matches[1]);
} else {
    console.log("nothing found");
}