\ w是否也匹配数字?

时间:2016-10-20 08:37:00

标签: javascript regex

我希望这个

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

3 个答案:

答案 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