簡體   English   中英

RegEx模式:從文本塊中提取電話號碼

[英]RegEx Pattern: extracting phonenumbers from a text block

我正在嘗試從字符串中獲取所有電話號碼。

輸入字符串:

Antoine Smith 911 839 7393 9118582588 91145MAURY Bob Smith

我想獲取三個電話號碼: 911 839 7393 9118582588 91145MAURY

我正在使用的正則表達式。

[a-zA-Z]*([0-9]( |-)?)?(\(?[0-9]{3}\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})+

但是,這不起作用。

如果我只輸入短語:“ 911 839 7393 9118582588 91145MAURY Bob Smith”,則正則表達式將返回電話號碼。

我應該使用什么正則表達式?

假設區號永遠不會是字母,並且空格是唯一要考慮的標點符號,則可以使用\\d{3} ?\\w{3} ?\\w{4}

您可以使用此正則表達式:

(\d{3}\s?\d{3}\s?\d{4})|(\d{5}\w{5})

工作演示

在此處輸入圖片說明

順便說一句,正則表達式可以縮短為:

((?:\d{3}\s?){2}\d{4})|(\d{5}\w{5})

有趣的是……當人們以名字來考慮電話號碼時,挑戰就變得更大了。 考慮到破折號,點和括號作為定界符,可能有很多排列。 這是我想出的:

((\+\d{1,2}\s)?\(?\d{3}\)?[\s\.\-]?\d{3}[\s\.\-]?\d{4})|(\+?\d{1,2}\s?\(?\-?\d{3}\)?\s?\-?[a-zA-Z0-9]{3,4}[\s\.\-]?[a-zA-Z0-9]{3,5}\b)

對於您的示例和幾個受歡迎的國家/地區號碼(例如1-800-FLOWERS和1800 BEST-BUY),似乎都可以正常工作,因為模式是4個字母-3個字母而不是反向字母,所以后者有些棘手。

希望能有所幫助。

很好的答案。

使用:(0-9?)?((?[0-9] {3})?| [0-9] {3})(|-)?([0-9] {3}(|-) ?[0-9] {4} | [a-zA-Z0-9] {7})*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM