我必须从我拥有的表单字段中删除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
应该留下
答案 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[^@]