Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
262 views
in Technique[技术] by (71.8m points)

javascript - Regex to detect urls with '?' character at the end

I found many solutions, but none was useful for me.

Let's say, as an example, I want to find URLs that start with www. and end with a space or ?. In this case, I really mean it ends in a ?, not that it's necessarily a CGI-related URL.

I'm trying to use the regex

var r = /(^|[s?])(www..+?(?=([s]|?|($))))/g;

My sample use: http://jsfiddle.net/DKNat/2/

How can I use ? in a regex to prevent the end of the URL containing / before ??

http://jsfiddle.net/DKNat/11/

I can't solve last prob with DOT at the end of url. Can any body help?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Try this in your fiddle:

var r = /(^|??)(www.[^?]+)/g;

I updated your fiddle here:

http://jsfiddle.net/DKNat/3/

Update:

I see what you are trying to do now. Unfortunately, both your strings are essentially the same, apart from the /, so unless you want your regex to make the assumption that a ? anywhere after a slash denotes a CGI call, then there isn't much you can do. But you could try this:

var r = /(^|??)(www.[^?]+/[^/]+?[^?]+|www.[^?]+)/g;

Updated fiddle:

http://jsfiddle.net/DKNat/5/

Update 2: After determining the requirements, this is the final RegExp I added to fiddle 10:

var r = /(^|[?s])(www.[^? ]+/[^/ ]*?[^? ]+|www.[^? ]+)/g;

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...