2015-11-17 44 views
1

任何人都可以幫助我嗎? 我正在驗證鏈接在Java中的URL。我創建了一個正則表達式(我不熟悉)來驗證鏈接,但是我正在努力。如何使用RegEx Patterns在Java中檢查LinkedIn網頁鏈接?

的代碼如下:

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/」 後綴:

問候

+0

爲什麼你認爲無效的無效? (除了'google.com',我想)。另外,爲什麼'「https://www.linkedin.com/sometext」'既有效又無效? –

+0

爲什麼'https:// www.linkedin.com/sometext'既在** valide也在**? –

+0

抱歉,我忘了提及。我正在嘗試驗證有效的LinkedIn網址。謝謝 –

回答

2

我會去 「與200個字符一個最大的任何字符」:

^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 
+0

謝謝。它工作正常使用regex101,但是當我將它添加到Eclipse一個字符串它會引發錯誤「無效的轉義序列」。這是我失蹤的東西嗎? –

+0

@WilFerraciolli修復:)請參閱[diff](http://stackoverflow.com/posts/33760587/revisions)。這是因爲'\'必須逃脫才能正常工作 –

+1

我懷疑你必須逃避'/'符號。根據經驗,將所有「特殊」字符放入'[]'中。試試'^ https:// [a-z] {2,3} [。] linkedin [。] com /.*$' –

相關問題