我希望这个
var r = new RegExp('\\s\\@[0-9a-z]+\\s', 'gi');
应用于此字符串
1 @bar @foo2 * 112
会给我
1 * 112
位反而导致
1 2 * 112
所以看起来@[0-9a-z]+
与数字不匹配。
当然,我遇到了一些错误,但我无法弄清楚是什么。
这是javascript - Firefox 49.0
答案 0 :(得分:1)
我很快就把它搞砸了,应该做你想做的事。
var string = "1 @bar @foo2 * 112";
var matches = string.replace(/\s@\w+/gi,"");
console.log(matches)
我无法使用该正则表达式重现您的结果,但我发现最后的\ s会停止匹配@ foo2。
var value = "1 @bar @foo2 * 112";
var matches = value.match(
new RegExp("\\s\\@[0-9a-z]+\\s", "gi")
);
console.log(matches)
这是因为正则表达式不能匹配@foo前面的空格,这是匹配的一部分。我希望这段代码能解决你的问题。
答案 1 :(得分:0)
是的,\w
确实匹配拉丁数字。 \w == [A-Za-z0-9_]
假设您要删除@fooX
,可以使用:
console.log("1 @bar @foo2 * 112".replace(/\s@\w+/g, ""));
答案 2 :(得分:0)
" \ W"匹配任何单词字符(字母数字和下划线)。仅匹配low-ascii字符(无重音或非罗马字符)。相当于[A-Za-z0-9_] 最佳学习资源:www.regexr.com