gpt4 book ai didi

JavaScript RegExp 从起始位置删除@符号

转载 作者:行者123 更新时间:2023-11-28 19:33:14 25 4
gpt4 key购买 nike

我想修改我的正则表达式以删除@大小,但仅选择以@符号开头的单词。

以下是我的代码,查看 Live

JS

var a = "@abc @jat hi pat @jkl abc  @cde vcd @cde   ";
var s = a.match(/(?=(\s{1}?@[^\s]+)|(\s?))(@[^\s]+)(?=(\s))/g);

console.log(s);

结果

["@abc", "@jat", "@jkl", "@cde", "@cde"] 

预期结果

["abc", "jat", "jkl", "cde", "cde"] 
<小时/>

最佳答案

由于 JavaScript 没有后视功能,我认为您无法在单个 match 语句中完成此操作(无需后处理),因为您需要一个捕获组。

当然,使用 ES5 的 Array#map (可以进行填充)后处理是微不足道的:

var s = a.match(/(?=(\s{1}?@[^\s]+)|(\s?))(@[^\s]+)(?=(\s))/g).map(function(entry) {
return entry.substring(1);
});

否则,您将需要使用捕获组和 exec 循环。

顺便说一句,我认为正则表达式可以简单得多,如果您想要的只是 \s 分隔:

var a = "@abc @jat hi pat @jkl abc  @cde vcd @cde   ";
var s = a.match(/@\S+/g).map(function(entry) {
return entry.substring(1);
});
display(s.join(", "));

function display(msg) {
document.body.insertAdjacentHTML(
"beforeend",
"<p>" + msg + "</p>"
);
}

关于JavaScript RegExp 从起始位置删除@符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com