杂乱的字符串。最后排除'@'字符的正则表达式

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

基本上,这是用户的属性被搞乱了(所有信息都在一个字符串中,没有遵循任何一种模式)。

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

^9[0-9]{9}

将适用于用户的手机。但是,某些用户的电子邮件地址确实等于电话号码 +“@”之类的东西。这似乎是个问题。

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

9876548877@

我试过了

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

并在这里获得完全匹配:

9876548877

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

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

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

我该怎么做?提前致谢。

慕仙森
浏览 116回答 1
1回答

MM们

您可以使用环视来断言左边的不是非空白字符,右边的不是@:(?<!\S)9[0-9]{9}(?!\@)正则表达式演示例如,如果可以:直接在数字之前,您可以省略开头的后视并使用单词边界\b
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java