4

我有一个非常混乱的字符串数组,它们不遵循任何特定的模式。

基本上,是用户的属性搞砸了(一个字符串中的所有信息,不遵循任何类型的模式)。

我对 2 个特定属性(电子邮件和号码)感兴趣。我找到了一种获取电子邮件的方法,并认为以下正则表达式:

^9[0-9]{9}

将适用于用户的手机。但是,有些用户确实拥有等于电话号码 + '@'.something 的电子邮件。这似乎是个问题。

所以,我需要一个正则表达式,它将排除以下内容并只给我一个数字。

9876548877@

我试过了

^9[0-9]{9}((?!@).{0})*$"

并在这里获得完整的比赛:

9876548877

但只有当字符串不包含除此之外的任何内容时,它才能很好地工作。

我想要实现的是在这样的字符串中准确获取电话号码:

/* mess mess mess*/ John Doe Jr email: 9876548877@jdoe.com, phone number: 9876548877, /* more mess */

我该怎么做?提前致谢。

升级版:

谢谢您的回答先生,但任务是有点不同

例如,我从这里取了一个正则表达式,然后在这里测试它我得到了我想要的结果。我正在尝试完成相同的行为,但使用电话号码并且没有'@'以确保这正是我正在寻找的。

问题描述不正确。我的错。

4

1 回答 1

1

您可以使用环视来断言左侧不是非空白字符,右侧不是@:

(?<!\S)9[0-9]{9}(?!\@)

正则表达式演示

例如,如果可以:直接在数字之前有 a ,则可以省略开头的lookbehind并使用单词边界\b

于 2019-08-08T05:25:14.963 回答