473,387 Members | 3,750 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,387 software developers and data experts.

Validate URL script help

MJ
For some reason the following script does not work in Netscape/Mozilla, but
works fine in IE and Opera. It is supposed to check the syntax, make sure
there is a valid TLD (yes, those are all of the current TLDs), and allow for
addresses with or without trailing slashes or page addresses.

Anybody have any ideas on how to get this to work in Netscape? I suspect it
has something to do with the regular expression, but I can't get it to work.
Any help would be GREALY appreciated!

// Validate URL
re3 =
/^(http|https):\/\/\S+\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arp a|as|at
|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo| br|bs|bt|bv|bw|by|bz|ca|cc
|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|c x|cy|cz|de|dj|dk|dm|do|dz|
ec|edu|ee|eg|er|es|et|fi|fj|fk|fm|fo|fr|ga|gb|gd|g e|gf|gg|gh|gi|gl|gm|gn|gov
|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|i l|im|in|info|int|io|iq|ir|
is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la |lb|lc|li|lk|lr|ls|lt|lu|l
v|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms |mt|mu|museum|mv|mw|mx|my|
mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om |org|pa|pe|pf|pg|ph|pk|pl|
pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|s d|se|sg|sh|si|sj|sk|sl|sm|
sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn |to|tp|tr|tt|tv|tw|tz|ua|u
g|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt| yu|za|zm|zw)([/]\S+|)$/i;

function validateURL(textfield){
if (textfield.value == ""){
return true;
} else {
if (textfield.value.substring(0,7) != "http://" &&
textfield.value.substring(0,8) != "https://") {
textfield.value = "http://" + textfield.value;
}
if (!re3.test(textfield.value)){
alert("Invalid web site address");
textfield.focus();
}
return false;
}
}

It is being called by a simple:

<input name="Website" type="text" onBlur="validateURL(this)">
Jul 23 '05 #1
3 3354
"MJ" <no*****@thank.you> writes:
For some reason the following script does not work in Netscape/Mozilla, but
works fine in IE and Opera.
"does not work" how? Do you get an error message or does it accept the wrong
strings?
/^(http|https):\/\/\S+\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arp a|as|at
|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo| br|bs|bt|bv|bw|by|bz|ca|cc
Your newsclient has wrapped the line. It should be on one line to work.
g|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt| yu|za|zm|zw)([/]\S+|)$/i;

^
That slash should be escaped. Change "[/]" to "\/".

Not tested (didn't want to rewrap the lines :)
/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'
Jul 23 '05 #2
MJ
Ah, it was the regular expression. Escaping the slash fixed it. I could
have sworn I had tried that before, but I guess not.

Thanks for the help! You're a life saver.
"Lasse Reichstein Nielsen" <lr*@hotpop.com> wrote in message
news:ll**********@hotpop.com...
"MJ" <no*****@thank.you> writes:
For some reason the following script does not work in Netscape/Mozilla, but works fine in IE and Opera.
"does not work" how? Do you get an error message or does it accept the

wrong strings?
/^(http|https):\/\/\S+\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arp a|as|at
|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo| br|bs|bt|bv|bw|by|bz|ca|cc
Your newsclient has wrapped the line. It should be on one line to work.
g|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt| yu|za|zm|zw)([/]\S+|)$/i; ^
That slash should be escaped. Change "[/]" to "\/".

Not tested (didn't want to rewrap the lines :)
/L
--
Lasse Reichstein Nielsen - lr*@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html> 'Faith without judgement merely degrades the spirit divine.'

Jul 23 '05 #3
MJ wrote:
// Validate URL re3 = /^(http|https):
The alternation can be written as /https?/ which is generally
more efficient ("http" can be matched always only once).
\/\/\S+\.(ac|ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arp a|as|at
|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo| br|bs|bt|bv|bw|by|bz|ca|cc
|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cu|cv|c x|cy|cz|de|dj|dk|dm|do|dz|
ec|edu|ee|eg|er|es|et|fi|fj|fk|fm|fo|fr|ga|gb|gd|g e|gf|gg|gh|gi|gl|gm|gn|gov
|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|i l|im|in|info|int|io|iq|ir|
is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kr|kw|ky|kz|la |lb|lc|li|lk|lr|ls|lt|lu|l
v|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms |mt|mu|museum|mv|mw|mx|my|
mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om |org|pa|pe|pf|pg|ph|pk|pl|
pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|s d|se|sg|sh|si|sj|sk|sl|sm|
sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn |to|tp|tr|tt|tv|tw|tz|ua|u
g|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt| yu|za|zm|zw)
That can be shortened very much to

\/\/\S+\.(aero|arpa|a[c-gilm-oq-uwz]|biz|b[a-bd-fjm-or-tvwyz]|com|coop
|c[acdf-ik-oruvx-z|d[ejkmoz]|edu|e[cegr-t]|f[i-kmor]|gov|g[abd-il-npr-uwy]
|h[kmnrtu]|info|int|i[del-oqr-t]|j[emop]|k[eghimnrwyz]|l[abcikr-vy]
|museum|mil|m[acdghkl-z]|name|net|n[acefgilopruz]|org|om|pro|p[aefghk-nr-twy]
|qa|r[eouw]|s[a-eg-ort-vyz]|t[cdf-hjkm-prtvwz]|u[agkmsyz]|v[aceginu]
|w[fs]|y[etu]|z[amw])

(if I have not missed a character or two, but I think you get the
idea). That is not only shorter but can be more efficient than
complete alternation, depending on the type of RegExp engine used.
With a NFA, character classes are much more efficient than alternation
because matching can be done in parallel and thus much faster. (See
<http://www.oreilly.com/catalog/regex/chapter/ch04.html>, "Character
Classes vs. Alternation".) For ECMAScript and implementations, a NFA
is clearly involved in the matching process, if not the only engine
type used, as backreferences and capturing parantheses are supported.
So it is clearly a Good Thing to replace alternation with character
classes here and avoid alternation where possible.

But:

Are you sure you need the top level domain this precise while
the rest is checked rather sloppy? Are you prepared to maintain
that script as top level domains evolve? Why don't you allow
IPv4 addresses in URLs? They can be static. Why don't you stick
(close) to RFC 2396? The BNF grammar can be easily implemented
as a RegExp.
([/]\S+|)$/i;


As Lasse already pointed out, in RegExp literals every forward slash
must be escaped, even in character classes. In fact, the character
class does not help here. But you probably meant /((\/\S+)?)$/i.
Rule of thumb: Do not use alternation when not necessary, see above.
PointedEars

P.S.
Please take heed of Usenet/Internet standards and use an existing "From:"
address. Avoiding spam is no excuse for breaking standards and thus helping
to destroy the functionality of the involved media:
<http://www.interhack.net/pubs/munging-harmful/>
Jul 23 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Mark Griffin | last post by:
Hi... I am trying to convert a simple FAQ script to access mysql db rather than the Access db it was designed for. The originators of the script offer no support at all. I have managed to set...
6
by: Brian | last post by:
Help.. We cannot get this script to work..can someone take a look at it and make suggestions? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Convert...
2
by: Sev | last post by:
Website: www.flywessex.blogspot.com You can see from the page source what an effin' mess I'm making of the site. Aside from all the obvious alignment issues, I can't get the code to link to...
2
by: . . | last post by:
Hi I need some help with java script . I have four link button on my ASPX page . Each button gives user specific message when they click on it .The first button is is the default button and the...
5
by: hoozdiss | last post by:
i installed apache 2.2 on winxp with php5. when i write a piece of html and include a php or java script in the html i have no problem. when i file the script and use something like <script ...
0
by: Jay Douglas | last post by:
Hello all, I'm in need of a custom validator that: 1). Runs server side code using ajax through a client validate function 2). Client validate function does not set args.IsValid until the...
1
by: rmsterling | last post by:
All, Subject : SQL Server 2005 SSIS Script Help - XML Secure Pull in to DB table I was wondering if any of you could help me with something..... I want to design a SSIS script that will pull...
1
by: wesselinbg | last post by:
Hello everyone! My name is Veselin and i'm php and mysql coder. But now i have big problems with one javascript that i want to create (maybe because i don't understand nothing from javascript :)). I...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.