javascript 匹配返回单词边界

标签 javascript regex

正则表达式不是我的强项。我希望你们中的一位可以帮助我。

我正在尝试使用 javacript.match() 来搜索所有散列(# 开头)单词。 我得到一个返回的空白。

string = "#foo #bar"
result = string.match(/(^|\W)(#[a-z\d][\w-]*)/ig);
console.log(result)

结果:

 ["#foo", " #bar"] 

注意#bar 中的空格。
我应该对正则表达式进行哪些更改以排除返回 .match 中的边界?
感谢您的帮助!!

最佳答案

之前您不需要 (^|\W) ,因为 # 无论如何都被视为非单词字符。您将获得空间,因为 \W 也会匹配空格。

这个正则表达式会工作得更好:

var re = /(?:^|\s)(#[a-z\d][\w-]*)/g,
    matches = [],
    input = "#foo #bar abc#baz";
while (match = re.exec(input)) matches.push(match[1].trim());

console.log(matches);
//=> ["#foo", "#bar"]

编辑:为了避免循环:

var m = [];
var str = "#foo #bar abc#baz";
str.replace(/(^|\s)(#[a-z\d][\w-]*)/g, function($1) { m.push($1.trim()); return $1; } );

console.log(m);
//=> ["#foo", "#bar"]

关于javascript 匹配返回单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432489/

相关文章:

javascript - 如何创建 Tampermonkey 脚本来防止页面的某些部分成为链接?

javascript - 使用 Promise 进行分页的最佳方法是什么?

c# - 正则表达式/字符串分割

javascript - 如何使用正则表达式中的 或 选项提取和捕获特定的多个单词。?

javascript - 编写一个 backbone.js View 方法,自动向下滚动带有 CSS 溢出的 DOM 元素

javascript - 按钮与同一网页上的另一个按钮重叠/冲突

javascript - 对象作为 React 子对象无效 - 文本输入

Javascript 替换不起作用?

c# - 如何使用正则表达式获取包含在括号之间的文本?

python - 由于用户输入导致正则表达式冲突