gpt4 book ai didi

javascript - 操作字符串中的 Javascript RegExp 出现次数

转载 作者:行者123 更新时间:2023-12-02 13:49:28 25 4
gpt4 key购买 nike

我正在将电话号码转换为可点击的网址。我有一个 html 字符串,其中随机电话号码以非特定/一致的方式出现:

Fidel Velazquez (834)316-90-90
↵Libertad (834) 316-2930

我使用正则表达式来搜索出现的情况并“链接”它们,这是有助于实现这一点的函数:

    var regex = new RegExp(
"\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+",
"g"
);
return inputText.replace(regex, '<a href="tel:$&">$&</a>');

问题是,对于上面的示例,我在电话号码之前有一个空格,这导致 html 链接无法正常工作(即我收到“(834)316-90-90 ”而不是“(834)316-90-90”)。

我可以直接在正则表达式上更改某些内容吗?或者有没有办法应用 .replace(' ', '');只针对出现的情况?

谢谢!

最佳答案

您可以使用函数进行替换,允许您自定义替换字符串。

var inputText = `Fidel Velazquez (834)316-90-90
Libertad (834) 316-2930
`;

var regex = new RegExp(
"\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+",
"g"
);
var output = inputText.replace(regex, function(m) {
var match = m.replace(/ /g, '');
return `<a href="tel:${match}">${m}</a>`;
});

console.log(output);

或者您可以构造一个更仔细的正则表达式,将原始表达式拆开,然后使用捕获组以不同的方式将其组合在一起。这受到更多限制,但足以满足您的描述。 (此外,new RegExp 并不惯用,只有在动态生成正则表达式时才使用它。)

对于您的具体问题,您甚至可以要求仅当前一个匹配时才匹配空格...许多不同的解决方案,具体取决于您的要求。请注意,此正则表达式还将匹配一些看起来不像电话号码的内容:

关于javascript - 操作字符串中的 Javascript RegExp 出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41114529/

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