使用javascript在字符串中获取电话号码

时间:2017-11-03 18:55:19

标签: javascript node.js regex

我一直在谷歌搜索并完成所有的stackoverflow而不是一个正则表达式工作。

我只想尝试从这样的字符串中获取电话号码:

Phone:  123-456-7890

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam lobortis ullamcorper neque ut euismod. Curabitur convallis 1-800-123-4567 luctus posuere. Suspendisse placerat porta urna, vel bibendum odio aliquet ut. Quisque in posuere tortor. Vivamus sodales risus non dapibus posuere. Sed odio est.

我在网上找到的用于电话验证的每个正则表达式字符串都不起作用。我假设因为验证只需要字符串中的数字,而不是文本和空格。

3 个答案:

答案 0 :(得分:2)

这是一个正则表达式示例,可以找到与您的示例中的电话号码类似的电话号码。它可能不适用于评论中提到的一些示例,但它可能是您正在寻找的。此功能直接来自this related SO post。运行下面的代码段以查看行为。



var regex = new RegExp(
                "\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]\\d{2,})+",
                "g"
            );

var possiblePhoneNumbers = ["Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam lobortis ullamcorper neque ut euismod. Curabitur convallis 1-800-123-4567 luctus posuere. Suspendisse placerat porta urna, vel bibendum odio aliquet ut. Quisque in posuere tortor. Vivamus sodales risus non dapibus posuere. Sed odio est.", "Find another one right here 1-888-999-1010 or can it?"];

for (var i=0; i < possiblePhoneNumbers.length; i++) {
    document.write('<br />');
    document.write(possiblePhoneNumbers[i] + ' => ');
    document.write('<br />');
    while (match = regex.exec(possiblePhoneNumbers[i])) {
        document.write("Phone # in string: " + match[0]);
    }
    document.write('<br />');
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

对于regexp,有一些重要的事情需要考虑。

最简单的是,是否会在您搜索的字符串之前或之后出现分隔符,例如&#34;电话:&#34;。如果是这样,你可以制作一个正则表达式语句来搜索&#34;电话:&#34;并在此之后采取一切,直到下一个分隔符。

如果您无法预测字符串之前或之后会发生什么,那么您必须编写正则表达式以搜索类似于电话号码的内容。

如果是这样,电话号码的格式是否始终相同?

如果是,则很容易,搜索1 [ - ] [0-9] {3} [ - ] [0-9] {3} [ - ] [0-9] {4} < / p>

上面说过,找到以1开头后跟一个短划线( - )后跟3个连续数字0-9的字符串,然后是短划线,接着是3个以上的数字,接着是破折号,接着是4个以上的数字

问题在于,如果电话号码不以1开头,那么具体是有限制的吗?关键是你必须找出总是如此。

对于我们的示例,电话号码总是有3位数短划线3位数短划线4位数,但有时它可能在前面有国家/地区扩展名,例如1。

所以也许您想要寻找333-333-4444格式,并告诉它在此之前采取任何格式,直到它找到空白等。

答案 2 :(得分:0)

一般解决方案:

&#13;
&#13;
    alert("Phone: 123-456-7890".match(/\d+-\d+-\d+/))
&#13;
&#13;
&#13;