gpt4 book ai didi

javascript - JS判断String是否有电话号码

转载 作者:行者123 更新时间:2023-11-30 09:44:38 24 4
gpt4 key购买 nike

我目前正在构建一个聊天框,并希望对用户发送的内容进行一些快速的客户端验证。我希望能够检测用户是否在他们的消息中发送了电话号码(尽可能多的格式,但一般的美国格式是可以的)并将其替换为井号 (#)。我已经为这样的电子邮件实现了这一点:

var message = 'Hi. This is my email: foo@bar.com. This is my number: (970)-555-7595.';
var emailExp = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/img;

// prints: Hi. This is my email: *********. This is my number: (970)-555-7595
console.log(message.replace(emailExp, '*********'));

我希望它看起来像这样:

var message = 'Hi. This is my email: foo@bar.com. This is my number: (970)-555-7595.';
var emailExp = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/img;
var phoneExp = SOME_CRAZY_PHONE_REGEX;

// prints: Hi. This is my email: *********. This is my number: ##########
console.log(message.replace(emailExp, '*********').replace(phoneExp, ##########));

我有什么办法可以做到这一点?我需要它找到字符串中每个电话号码的所有实例,并将它们替换为井号。表达式不必太疯狂,但我希望它能匹配大多数通用的美国格式。

我确实四处寻找模式,但大多数模式都会验证一个完整的字符串一个电话号码。我正在尝试查找并替换字符串中的所有电话号码。谢谢

编辑

我不打算改进我的电子邮件模式。只是一种适用于这种情况的电话号码模式:)

最佳答案

最终的解决方案是:

var phoneExp = /(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?/img;

根据 fatcat 的决议 fatcat1111's solution here .我只需要删除开头的 ^ 字符和结尾的 $ 字符。

关于javascript - JS判断String是否有电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39418130/

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