2012-02-15 35 views
12

Tôi đã viết regex để xác nhận URL mà có thể là một trong hai giống nhưRegular Expression để xác nhận URL

google.com 

www.google.com 

http://www.google.com 

https://www.google.com 

Tôi đã sử dụng

Regex urlRx = new Regex(@"^(http|ftp|https|www)://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?$", RegexOptions.IgnoreCase); 

Nó hoạt động cho http & https.It không được làm việc cho google ./com & www.google.com.

Hãy giúp tôi giải quyết vấn đề này.

Cảm ơn

+0

Tôi sử dụng này một (không có ftp) |^http (s)?: // [a-z0-9-] + (. [a-z0-9-] +) * (: [0-9] +)? (/. *)? $ | i – AjayR

+0

nó có hoạt động với www.google.com không? – PrateekSaluja

+0

Được cảnh báo, đối với các trường hợp đơn giản, điều này rất đơn giản, đối với các trường hợp phức tạp (ví dụ: với chuỗi truy vấn hoặc ký tự đặc biệt trong url), không đơn giản ... – Benjol

Trả lời

46

không cần thiết cho một IMHO regex - thử

Uri.IsWellFormedUriString(YourURLString, UriKind.RelativeOrAbsolute) 

Xem MSDN

+0

Cảm ơn nhưng nó sẽ không hoạt động nếu tôi có văn bản có liên kết. – PrateekSaluja

+0

@PrateekSaluja Tôi không chắc rằng tôi hiểu - 'YourURLString' chỉ là chuỗi bình thường ... hoặc có một văn bản bình thường với một số liên kết ở đâu đó ở giữa nó? – Yahia

+1

Vui lòng kiểm tra thông báo này. "Xin chào, bạn thế nào? Www.google.com" – PrateekSaluja

4

Đặt phần giao thức trong một nhóm tùy chọn tức là, ()?:

^((http|ftp|https|www)://)?([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)?$ 
+1

'System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex (@"^((http | ftp | https | www): //)? ([\ W +? \. \ W +]) + ([a-zA-Z0-9 \ ~ \! \ @ \ # \ $ \% \^\ & \ * \ (\) _ \ - \ = \ + \\\/\? \. \: \; \ '\,] *)? $ ");' – mbrownnyc

4

tôi lấy mã này từ jquery.validation (tôi đã thực hiện một số chỉnh sửa)

bool isValid = (Regex.IsMatch (giá trị, @ "(((([a-z] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (% [\ da-f] {2}) | [! \ $ & '() * +,; =] |:) * @)? (((\ d | [1-9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5]). (\ d | [1 -9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5]). (\ D | [1-9] \ d | 1 \ d \ d | 2 [0 -4] \ d | 25 [0-5]). (\ D | [1-9] \ d | 1 \ d \ d | 2 [0-4] \ d | 25 [0-5])) | ((([az] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (([az] | \ d | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) ([az] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) ([az] | \ d | [ \ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]))).) + (([az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (([ az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) ([az] | \ d | - |. | _ | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0 - \ uFFEF]) ([az] | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]))).?) (: \ d *)?) (/ ((([az] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (% [\ da-f] {2}) | [! \ $ & '() * +,; =] |: | @) + (/ (([az] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (% [\ da-f] {2}) | [! \ $ & '() * +,; =] |: | @) ))?)? (\? ((([Az] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (% [\ da-f] {2}) | [! \ $ & '() * +,; =] |: | @) | [\ uE000- \ uF8FF] |/| \?) *) ? (# ((([az] | \ d | - |. | | ~ | [\ u00A0- \ uD7FF \ uF900- \ uFDCF \ uFDF0- \ uFFEF]) | (% [\ da-f] {2 }) | [! \ $ & '() * +,; =] |: | @) |/| \?) *)? $ "));

Tôi đã tìm kiếm gần một ngày và điều này là tốt nhất tôi tìm thấy .. Đây chỉ là vài mẫu hợp lệ:

  1. example.com
  2. example.com.ph
  3. www.example.com
  4. http://example.com
  5. https://example.com
  6. http://www.example.com
  7. ftp://example.com
  8. example.com/doc
  9. www.example.com/doc
  10. http://example.com/doc
  11. http://example.com/questions/12576252/convert-javascript-regex-to-c-sharp-regex-for-email-validation
  12. http://www.example.com/wpstyle/?p=364
  13. http://userid:[email protected]:8080
  14. https://www.example.com/foo/?bar=baz&inga=42&quux
  15. LDAP: //ad1.cc.uq.edu.ph
1
^(http|http(s)?://)?([\w-]+\.)+[\w-]+[.com|.in|.org]+(\[\?%&=]*)? 
Các vấn đề liên quan