我一直在谷歌搜索并完成所有的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.
我在网上找到的用于电话验证的每个正则表达式字符串都不起作用。我假设因为验证只需要字符串中的数字,而不是文本和空格。
答案 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;
答案 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)
一般解决方案:
alert("Phone: 123-456-7890".match(/\d+-\d+-\d+/))
&#13;