【问题标题】:How to check LinkedIn web link using RegEx Patterns in Java?如何使用 Java 中的 RegEx 模式检查 LinkedIn Web 链接?
【发布时间】:2016-02-19 00:45:13
【问题描述】:

谁能帮帮我? 我正在研究在 java 中链接到 url 的验证。我创建了一个正则表达式(我不熟悉)来验证链接,但是我正在努力解决它。

代码如下:

public class TestRegEx {

    public static void main(final String[] args) {

        // List of valid URLs
        List<String> validValues = new ArrayList<>();
        validValues.add("https://www.linkedin.com/sometext");
        validValues
                .add("https://uk.linkedin.com/in/wiliam-ferraciolli-a9a29795");
        validValues.add("https://it.linkedin.com/hp/");
        validValues.add("https://cy.linkedin.com/hp/");
        validValues
                .add("https://www.linkedin.com/profile/view?id=AAIAABQnNlYBIx8EtS5T1RTUbxHQt5Ww&trk=nav_responsive_tab_profile");


        // List on invalid URLs
        List<String> invalidValues = new ArrayList<>();
        invalidValues.add("http://www.linkedin.com/sometext");
        invalidValues.add("http://stackoverflow.com/questions/ask");
        invalidValues.add("google.com");
        invalidValues.add("http://uk.linkedin.com/in/someDodgeAddress");
        invalidValues.add("http://dodge.linkedin.com/in/someDodgeAddress");

        // Pattern
        String regex = "(https://)(.+)(www.)(.+)$";
        Pattern pattern = Pattern.compile(regex);

        for (String s : validValues) {
            Matcher matcher = pattern.matcher(s);
            System.out.println(s + " // " + matcher);
        }

    }
}

谁能帮我创建一个正则表达式来验证以下内容 前缀:“https://” 可选前缀:“英国”。 (可以是什么也可以是另一个国家) 中:“linkedin.com/” 后缀:“最多 200 个字符的任何字符”

问候

【问题讨论】:

  • 为什么你认为无效的无效? (除了google.com,我想)。还有,为什么"https://www.linkedin.com/sometext"既有效又无效?
  • 为什么https://www.linkedin.com/sometext 既有效又有效?
  • 对不起,我忘了提。我正在尝试验证有效的 LinkedIn URL。谢谢
  • 在无效的“linkedin.com/sometext”上,它意味着没有 HTTPS 和 HTTP。谢谢

标签: java regex url-pattern


【解决方案1】:

我会选择:

^https:\\/\\/[a-z]{2,3}\\.linkedin\\.com\\/.*$

LiveDemo


^ assert position at start of a line
https: matches the characters https: literally (case insensitive)
\/ matches the character / literally
\/ matches the character / literally
[a-z]{2,3} match a single character present in the list below

    Quantifier: {2,3} Between 2 and 3 times, as many times as possible, giving back as needed [greedy]
    a-z a single character in the range between a and z (case insensitive)

\. matches the character . literally
linkedin matches the characters linkedin literally (case insensitive)
\. matches the character . literally
com matches the characters com literally (case insensitive)
\/ matches the character / literally
.* matches any character (except newline)

    Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]

$ assert position at end of a line

【讨论】:

  • 谢谢。使用 regex101 可以正常工作,但是当我将它添加到 Eclipse 字符串时,它会抛出一个错误“无效的转义序列”。这是我想念的东西吗?
  • @WilFerraciolli 已修复 :) 请参阅 diff。这是因为\ 必须转义才能正常工作
  • 我怀疑您必须转义 / 符号。根据经验,将所有“特殊”字符放入[]。试试^https://[a-z]{2,3}[.]linkedin[.]com/.*$
  • 不错的一个。谢谢你的解释。
  • @Thomas:请参考character classes reference,尤其是字符类中的元字符部分。
【解决方案2】:

更新正则表达式

/in中的配置文件更改链接

http(s)?:\/\/([\w]+\.)?linkedin\.com\/in\/[A-z0-9_-]+\/?

【讨论】:

  • 仅代码答案几乎总是可以通过添加一些解释来改进。在这种情况下,请编辑答案,包括为什么需要更新、更新了什么以及正则表达式如何完成。
猜你喜欢
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
相关资源
最近更新 更多