剥离网址和电子邮件

时间:2014-04-23 19:47:56

标签: regex email url

我必须从我拥有的表单字段中删除URL。我在网上找到了这个正则表达式,但它并没有那么好用

@?(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?

它确实从电子邮件中删除了包含@符号的所有网址(我想要的),但它也删除了.之后的任何内容以及之后的2个字符,例如我的电子邮件:bia.migueis@gmail.com它匹配整个事物并在剥离后返回空。我需要剥离:

http://www.example.com
https://www.example.com
www.example.com
example.com

bia.migueis@gmail.com --> bia.migueis

应该留下

3 个答案:

答案 0 :(得分:1)

bia.migueis,你只想要网址?

此正则表达式的清理版本将捕获第1组中的网址:

(?:@|https?://)?([\da-z.-]+\.[a-z.]{2,6})\b(?!@)

输入:

http://www.example.com
https://www.example.com
www.example.com
example.com
bia.migueis@gmail.com --> 
bia.migueis

第1组捕获:

www.example.com
www.example.com
www.example.com
example.com
gmail.com

查看你的标签,我发现你最感兴趣的是Java和Javascript。

Java中的第1组:

String ResultString = null;
try {
    Pattern regex = Pattern.compile("(?:@|https?://)?([\\da-z.-]+\\.[a-z.]{2,6})\\b(?!@)");
    Matcher regexMatcher = regex.matcher(subjectString);
    if (regexMatcher.find()) {
        ResultString = regexMatcher.group(1);
    } 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}

Javascript中的第1组:

var myregexp = /(?:@|https?:\/\/)?([\da-z.-]+\.[a-z.]{2,6})\b(?!@)/;
var match = myregexp.exec(subject);
if (match != null) {
    result = match[1];
} else {
    result = "";
}

答案 1 :(得分:0)

您可以在最后添加一个NOT @符号。

@?(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?[^@]

答案 2 :(得分:0)

我把Ld00d和zx81的答案混合在一起,让它像我想要的那样工作

(?:@|https?:\/\/)?([\da-z.-]+\.[a-z.]{2,6})\b[^@]