我有这个正则表达式/@[a-zA-Z0-9_]+$/g
来全局查找所提到的所有用户名。
以下是一些示例代码。
var userRegex = /@[a-zA-Z0-9_]+$/g;
var text = "This is some sample text @Stuff @Stuff2 @Stuff3";
text.replace(userRegex, function(match, text, urlId) {
console.log(match);
});
基本上console.log
只会被调用一次,在这种情况下,它只会显示@Stuff3
。我不确定为什么它不是全球搜索。如果有人可以帮我修复那个正则表达式,那真是棒极了!
答案 0 :(得分:3)
$
表示“断言字符串末尾的位置(或在字符串末尾的换行符之前,如果有的话)”。但你似乎不想那样。
请删除$
并改为使用/@[a-zA-Z0-9_]+/g
。
var userRegex = /@[a-zA-Z0-9_]+/g,
text = "This is some sample text @Stuff @Stuff2 @Stuff3";
text.match(userRegex); // [ "@Stuff", "@Stuff2", "@Stuff3" ]
答案 1 :(得分:2)
它不是在整个上下文中进行全局搜索,仅仅是因为字符串$
的结束(仅在字符串位置的末尾声明)。您可以在此处使用以下内容:
var results = text.match(/@\w+/g) //=> [ '@Stuff', '@Stuff2', '@Stuff3' ]
注意: \w
是匹配任何字词的简写。
答案 2 :(得分:0)