パターンだけ違うので関数に切り出したらシュッとするように思いました。

```javascript
	AtmosStrings.prototype.extractAddressesUsers = function(msg) {
		return extract(/[^@\-_a-zA-Z0-9]@([a-zA-Z0-9\-_]+)/g, msg);
	};
	
	AtmosStrings.prototype.extractAddressesGroups = function(msg) {
		return extract(/[^$\-_a-zA-Z0-9]\$([a-zA-Z0-9\-_]+)/g, msg);
	};
	
	AtmosStrings.prototype.extractHashtags = function(msg) {
		return extract(/[^#]#([^#@ \n]+)/g, msg);
	};

	function extract(pattern, msg) {
		var list = new Array();
		var tempMsg = ' ' + msg + ' ';
		var address;
		while (matches = pattern.exec(tempMsg)) {
			list.push(matches[1]);
		}
		return list;
	}
```