JavaScript - Regular Expression For Url With Optional Domain
Hello!
I am creating a regular expression for a URL where the domain name (i.e. .com|.edu etc) is optional. That is both http://xyz and http://xyz.com should be valid. If <.> is present then com|edu|.. will be there; but if <.> is absent then com|edu|.. will not be there. Also there can be any number of <.>, but every <.> will be followed by characters. So in other words the string can't end with <.>, it should only end with [a-zA-Z0-9]. So far I have created the following part - var url=document.myform.addr.value; var str="^(http|https)\://(([a-zA-Z0-9\.\-]+)*[a-zA-Z0-9\-]+\.(com|edu|gov|[a-zA-Z]{2})|[a-zA-Z0-9]+$)"; var regEx = new RegExp(str); if (url.match(regEx)) { #Matched } But it's not working perfectly, it's giving runtime error, if I remove the last $, error is not coming, but http://xyz. is validated! Can you please help me how to modify the regex? So in summary http://xyz - valid http://xyz.com - valid http://xyz.co.uk - valid http://xyz. - ending with <.>, so invalid Thanks in advance. Similar TutorialsI want to validate a form with only numbers and "$" sign. so far i know this Code: currencyValue = which.value; var re = /^[0-9]*$/; if (!re.test(currencyValue)) { alert("Value must be all numberic charcters, non numeric's removed from field!"); field.value = field.value.replace(/D/g,""); } but how do I also add the "$" sign as ok? I want to find in all occurrences of #(...) in a string (what is between the parentheses is unknown. At the moment I have Code: str.match(/#\(.*\)/) The problem is, I want to be able to have multiple of these in one string, like "#(hello) good #(world)", but RegExp takes me from the first '#', to the last ')'. I want to allow nested parentheses, so I am thinking that there should be away to not let it look past the second '#'. How would I do this? Dear experts I have following codes Var re=/(\d){4}-(\d){7}/; When I test this string 0300-685706263 It says TRUE But I validate this string exactly 0300-6857062 Please help I am trying to find the correct regular expression (or an alternate) for if a user enter any more than 1-3 digits in the age field of a form it produces an error message. I already have the error set up, just the correct coding to produce the 1-3 digit condition. Thanks, KWIKCUCUMBER. Hi all, I have this line (part of a larger function that converts a few common BBCodes into HTML) and I don't know how to do one thing. First, here's the line: Code: str.replace(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<span style="color:$1;">$2</span>'); It works fine if I do this (I'll mis-spell "color" to prevent messing up the board): THIS works fine..... [colur=#ff0000]Red Text[/colur] But of course, if I do this: [colur="#ff0000"]Red Text[/colur] It doesn't work. What I need to do is take the $1 variable, AFTER it's captured, but BEFORE it's used, and strip out any quote marks I find. I may want to also strip out, then add the hash sign (#) also, then put it back so it works with or without the #. While I'm at it, I'll also probably detect color as a hex string vs. a keyword (so that both "#ff0000" and "red" work) and probably also support the rgb() method. But first I need to know how to access and modify $1 BEFORE it's used. I'm hoping that I don't need to use two lines (or two separate .replace() calls). Thanks! -- Roger can anyone explain me in detail what this regular expression mean... each and every part of this sentence: var baseRegex = new RegExp("^(?=.{6,})(?=.*^[A-Za-z]([a-zA-Z0-9_-]+)$)(?=.*[A-Z])"); for the character classes [ ] , if i want to match ,.[] i cannot put them into the square brackets so how to deal with that? what if the characters are . or ! or ." (<-- combined) it fails if the regexp is [.!(.")] which will treat ( as one of the element. also the book javascript: the definitive guide says that (?=p) requires that the following characters match the pattern p, but do not include those characters in the match. However, the browser failed to figure this out (IE8) i.e. "asd:ert".match(/(?=\\w/) returns null thx in advance I have the following regular expression to test the validity of an input date: Code: ([0-9][0-9]|[0-9])[\s/-]([0-9][0-9]|[0-9])[\s/-]([0-9][0-9][0-9][0-9]|[0-9][0-9]) It should allow 1 or two digits for the day of the month, then a separating character (" ", "/" or "-"), then 1 or two digits for the month, then 2 or 4 digits for the year. Unfortunately it will accept anything above 2 digits for the year, which I understand why is happening but don't know how to fix! Can anyone help? Thanks! Hello, How can i validate string with alphanumeric, space, dash and dot in regular expression ? Hi, Can someone fix the following regular expression? It is validating every thing expect YEAR. It only matches first 2 digits for year instead of 4. I want it to be 4 digits for a year. It returns true if I put 12/25/19.I want it to return false for the above date. Code: var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/; Thanks Im sorry im tired and cant think how to put this. how do i make \\1 and \\2 = margin-bottom[^;]+); and margin-top[^;]+); Sorry again, Regards. Code: var regep = /margin-bottom:([^;]+); margin-left:0px; margin-right:0px; margin-top:([^;]+);/; elementCSS = elementCSS.replace( regep , "margin-bottom:\\1; margin-left:auto; margin-right:auto; margin-top:\\2;"); I have a function that changes the label on a set of labels with similar "for" fields. Somehow, the matching is only matching every other label. I suspect I must be missing something obvious. The goal is to change the text of a set of radio buttons to either "top" and "bottom" or "left" and "right" depending on orientation. Code: function ChangeLabels(orientation) { var lefttop = "Left"; var bottomright = "Right"; var lbls = document.getElementsByTagName("label"); var lefttopregex = new RegExp ("Field6_[0-9]+", "gi"); var bottomrightregex = new RegExp ("Field20_","gi"); if (orientation == "Vertical") { lefttop = "Top"; bottomright = "Bottom"; } var forvalue = ""; for (var i=0,k=lbls.length; i<k; i++) { forvalue = lbls[i].htmlFor; if (lefttopregex.test(forvalue)) { lbls[i].innerHTML = lefttop; } if (bottomrightregex.test(forvalue)) { lbls[i].innerHTML = bottomright; } } } And here is the HTML of the labels. Code: <li id="fo1li6" class=" "> <label class="desc" id="title6" for="Field6_0"> Left/Top <span id="req_6" class="req">*</span> </label> <div> <input id="radioDefault_6" name="Field6" type="hidden" value="" /> <span> <input id="Field6_0" name="Field6" type="radio" class="field radio" value="Dogs" tabindex="20" onchange="handleInput(this);" checked="checked" /> <label class="choice" for="Field6_0" > Dogs</label> </span> <span> <input id="Field6_1" name="Field6" type="radio" class="field radio" value="Pineapple" tabindex="21" onchange="handleInput(this);" /> <label class="choice" for="Field6_1" > Pineapple</label> </span> <span> <input id="Field6_2" name="Field6" type="radio" class="field radio" value="Leaves" tabindex="22" onchange="handleInput(this);" /> <label class="choice" for="Field6_2" > Leaves</label> </span> <span> <input id="Field6_3" name="Field6" type="radio" class="field radio" value="Cat" tabindex="23" onchange="handleInput(this);" /> <label class="choice" for="Field6_3" > Cat</label> </span> <span> <input id="Field6_4" name="Field6" type="radio" class="field radio" value="Star" tabindex="24" onchange="handleInput(this);" /> <label class="choice" for="Field6_4" > Star</label> </span> <span> <input id="Field6_5" name="Field6" type="radio" class="field radio" value="Bamboo & Sun" tabindex="25" onchange="handleInput(this);" /> <label class="choice" for="Field6_5" > Bamboo & Sun</label> </span> <span> <input id="Field6_6" name="Field6" type="radio" class="field radio" value="Bamboo" tabindex="26" onchange="handleInput(this);" /> <label class="choice" for="Field6_6" > Bamboo</label> </span> <span> <input id="Field6_7" name="Field6" type="radio" class="field radio" value="Sun & Moon" tabindex="27" onchange="handleInput(this);" /> <label class="choice" for="Field6_7" > Sun & Moon</label> </span> <span> <input id="Field6_8" name="Field6" type="radio" class="field radio" value="Fleur de lis" tabindex="28" onchange="handleInput(this);" /> <label class="choice" for="Field6_8" > Fleur de lis</label> </span> <span> <input id="Field6_9" name="Field6" type="radio" class="field radio" value="Dragonflies" tabindex="29" onchange="handleInput(this);" /> <label class="choice" for="Field6_9" > Dragonflies</label> </span> <span> <input id="Field6_10" name="Field6" type="radio" class="field radio" value="No Design" tabindex="30" onchange="handleInput(this);" /> <label class="choice" for="Field6_10" > No Design</label> </span> </div> </li> Me again, having some issues with the following code... PHP Code: if (str.match(regEx)) { alert("illegal character"); } regEx = /[^0-9a-zA-z]/g I have tried typing in loads of strings, and nothing is causing the alert to work. Edit: Fixed it, it seems the fix is: regEx = [^0-9a-zA-z] I thought you need the /. I also can't use any modifiers, although it works fine without them. The following code removes the brackets and a dash from the string variable. I am interested why there are \ in front of each bracket in the regular expression regexp? The code work fine if regexp would be /()-/g; So why then / is necessary? I would appreciate a lot with someone could explain. Thank you very much. <html> <head> <title>Regular Expressions</title> <script type="text/javascript"> var string="(304)434-5454"; regexp=/[\(\)-]/g; document.write(string.replace(regexp, "")); </script> </head> <body> </body> </html> I want a regular expression for Citi where first character should not be a blank space. Thanks in advance Hi Guys, I am new to this forum, and new to the coding world, hopefully you guys will be able to help me get a little bit further in my little project. I am attempting to parse a string that is returned when I ask a device for some metadata information, now the information that is returned looks like this, Code: RESPONSE "<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="" parentID="" restricted="True"><dc:title>Una - Angels At My Door</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite>" ,the part in bold and underlined is the piece of text I want, now previously I have done this with some framing, but that doesn't include the same characters multiple times. Am I on the right track in believing using a Regular Expression Object is my solution ? If so how do I go about that ? If someone could give me some advice or point me in the right direction it would be most greatly appreciated ! Thank you very much in advance ! Hi guys, May i know how to write this string (1,2,4-6,9,11-13,20) in regular expression? Restrictions:- 1) Only numbers, comma and hyphen are allowed 2) no spaces are allowed Thanks much! I'm trying to convert a line using a regular expression. The re I am using is this: <div><span>·<span>[\s*]<\/span><\/span>([^<]*)<\/div> I'm using the expression in the replace function like this: html = html.replace( /<div><span>·<span>[\s*]<\/span><\/span>([^<]*)<\/div>/gi,'<li>$1</li>') ; the line of code I am changing is like this: <div><span>·<span> </span></span>Illness - where a pupil is too ill to leave the house</div> eg it should strip out the code and leave <li>Illness - where a pupil is too ill to leave the house</li> it works fine here http://www.regular-expressions.info/...ptexample.html but when used with the replace command it does not? Can anyone see the problem? (I'm trying to convert bullet points from word) Darren Hi i am using this form to validate my input Code: function validateForm() { var name = document.getElementById("name"); var descp = document.getElementById("descp"); var language = document.getElementById("language"); var txtFileName = document.getElementById("txtFileName"); var alphaNumExp = /^[a-zA-Z0-9 _-]+$/; var isValid = true; if ((name.value === "" || name.value.length < 1 || name.value.length > 30) && !name.value.match(alphaNumExp)) { isValid = false; } if ((descp.value === "" || descp.value.length < 1 || descp.value.length > 1000) && !descp.value.match(alphaNumExp)) { isValid = false; } if (language.value === "") { isValid = false; } if (txtFileName.value === "") { isValid = false; } document.getElementById("btnSubmit").disabled = !isValid; } for a form. It checks everything else correctly EXCEPT for the alpha numeric part. Any ideas?? I am new to JS writing on my own(just was using other's scripts) Hi all, As I scan each line of data that was entered into a textarea box, I need to call a function once I come across a line that starts with the following: Code: "0 B3C 0020365077 0045740301 3 09FEB2008 09MAR2010 " (without quotes) I have created the following legend to help with the creating a regular expression that will validate when I have found a line that needs further processing: N - number L - letter A - letter or number S - space So using the above legend, the first 51 characters of the line that I need to validate should always be in the following format: Code: "NSAAASSAAAAAAAAAASNNNNNNNNNNSASNNLLLNNNNSNNLLLNNNNS" (once again, without the quotes) I have been reading a few articles on JavaScript regular expressions but am a bit lost at this point as how to start? |