如何从字符串中仅提取电话号码和电子邮件ID?

时间:2012-02-24 07:02:46

标签: java

我有很多像这样的短信

  

我有一个新的手机,价格为18000卢比,我的新手机号码是9097123456,我的座机号码是040-201234,我的电子邮件地址是abcd@gmail.com -

现在我想从整个msg字符串中仅检索电话号码和电子邮件ID,并存储在单独的字符串变量中。怎么做?

5 个答案:

答案 0 :(得分:2)

使用regular expressions。有很多资源可以为您提供与电话号码,电子邮件等相匹配的表达。

答案 1 :(得分:0)

您最好的选择是正则表达式。您可以查看教程here

基本上,您需要使用群组来处理您的短信内容。一旦正则表达式解析了SMS消息,您就可以通过访问组来提取命中。

因此,例如,您可以使用与提供的here类似的正则表达式来提取电子邮件ID。像(\d{3}-\d{6})之类的东西将匹配任何3个数字,然后是破折号,然后是另外6个数字。圆括号表示正则表达式组。

答案 2 :(得分:0)

查看正则表达式。

见这里:http://komunitasweb.com/2009/03/10-practical-php-regular-expression-recipes/

通过PHP和regexpressions,您可以通过多种方法从字符串中提取电话号码和电子邮件。

$email = "test@example.com";
if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) {
    echo "Your email is ok.";
} else {
    echo "Wrong email address format";
}

您可以修改它以使用while循环拉出电子邮件地址,并使用$ i ++存储在数组中以表示将其保存到的位置。对于电话号码,请使用:

$phone = "(021)423-2323";
if (preg_match('/\(?\d{3}\)?[-\s.]?\d{3}[-\s.]\d{4}/x', $phone)) {
    echo "Your phone number is ok.";
} else {
    echo "Wrong phone number.";
}

答案 3 :(得分:0)

我认为你应该使用正则表达式。

完成每项工作,并使用各自的RedEx检查电子邮件和固定电话号码。

ALGO

for each word in SMS
    if email-RegEx matches word
        save email
    else if landLineNumber-RegEx matches word
        save landLineNumber
    end if
end for

return email,landLineNumber

答案 4 :(得分:0)

你可以使用这个目的正则表达式,这里是正则表达式来匹配电子邮件

^ [_ A-ZA-Z0-9 - ] +(\ [_ A-ZA-Z0-9 - ]。+) @ [A-ZA-Z0-9] +(\。[A-ZA-Z0-9] +)(\。[A-ZA-Z] {2,})$

这个正则表达式的解释

访问以下链接 Regular Expression