2009-09-08 22 views

Trả lời

40

Nếu bạn không cần một regex để làm điều này (tùy thuộc vào những gì ngôn ngữ mà bạn đang sử dụng), bạn chỉ có thể nhìn vào các nhân vật ban đầu của chuỗi của bạn. Ví dụ:

if (!string.StartsWith("http://")) 
    string = "http://" + string; 
//or// 
if (string.Substring(0, 7) != "http://") 
    string = "http://" + string; 
+3

Có thể nhiều, nhiều upvotes được ban cho bạn. Đôi khi, regexes là quá mức cần thiết. –

+1

Cảm ơn bạn đã chúc phúc. Có, đôi khi các tính năng ngôn ngữ mạnh mẽ bị lạm dụng. Regex không nhanh như các phép toán chuỗi đơn giản. –

6

Trong JavaScript:

if(!(/^http:\/\//.test(url))) 
{ 
    string = "http://" + string; 
} 
8

nên là:

/^http:\/\// 

Và hãy nhớ sử dụng điều này với ! hoặc not (bạn không nói trước với các ngôn ngữ lập trình), kể từ khi bạn là tìm kiếm các mục không khớp.

3

Something như thế này nên làm việc ^(https?://)

+0

Bạn cần phải thoát khỏi/s. – scragar

0

Nếu javascript là ngôn ngữ cần thiết tại đây, hãy xem this post thêm thuộc tính "startswith" vào loại chuỗi.

2
yourString = yourString.StartWith("http://") ? yourString : "http://" + yourString 

là sexy hơn

2
var url = "http://abcd"; 
var pattern = /^((http|https|ftp):\/\/)/; 

if(!pattern.test(url)) { 
    url = "http://" + url; 
} 

alert(url); 
+1

Trong khi mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung liên quan đến * cách * và/hoặc * lý do * giải quyết vấn đề sẽ cải thiện giá trị lâu dài của câu trả lời. - [Từ đánh giá] (http://stackoverflow.com/review/low-quality-posts/13275385) –

Các vấn đề liên quan