JavaScript - Regular Expression Match Always Returns Null
Hi,
I found this regular expression on the internet and it works fine when I test it in various validators on the web. Code: ^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d{2}|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$ It's purpose is to validate dates entered as mm/dd/yyyy, m/dd/yyyy, mm/d/yyyy or m/d/yyyy. When I try it with the code below it always returns null. Code: function isValidDate(/* String */ p1_date) { var x = "^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d{2}|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$"; var re = new RegExp(x); var myValid = p1_date.match(re); alert("p1_date: " + p1_date + "\nmyValid: " + myValid); return myValid; } Suggestions? Similar TutorialsI still working on this script for sorting fields in a wiki and have ran into another feature I'm trying to get working. Right now I have a long list that needs to be sorted and it looks like this: [[wiki:softwa softwarename|Display Text]] [[wiki:somethingelse:alphaname|Alpha Text]] [[wiki:whoops:etchers|Elephants]] The first part of my code is an attempt to match those with a regular expression: Code: else if (text.match(/\[\[(.*):(.*)\]\]/)) { return sorttable.sort_link; } The second part is the actual sorting: Code: sort_link: function(a,b) { aa = a[0].split(":",4); bb = b[0].split(":",4); if (aa[3]==bb[3]) {return 0;} if (aa[3]<bb[3]) {return -1;} return 1; }, I'm pretty sure the regular expression works... at least it works on some regular expression "testings" websites. But I just cant get these links to sort. I am trying to wort by the Display text which is located after the '|' in the text. Hi, I have the following code: Code: var str = "/dev/filler/test0/"; var patt = new RegExp("/ test0 /$"); var result = patt.exec(str); document.write(result); which returns: /test0/ in the var patt line I would like to replace the hardcoded test0 string with an expression that matches any characters between the two forward slashes. I have tried with little success. Hello, I am trying to parse a string using regular expressions. This string can potentially have any number of non-alphanumeric characters acting as delimiters. These delimiters can also be grouped together. Here are some examples of the data: 00923:5342:123 --> I want to extract 00923, 5342 and 123 into an array 08765::764375 --> parse this as 08765 and 764375 into an array 3246//672354//23458 --> parse as 3246, 672354 and 23458 23564-73654 --> etc I'm using the following code: Code: var ids = str.match(/\w*/g); But it just returns the first token from each line and ignores the rest. So with the above data I'm only getting back 00923, 08765, 3246 and 23564 into the first element of the "ids" array. I've also tried an "inverse" approach using the split method like so: Code: var ids = str.split(/\W*/g); and I just get the same result - the first token from each line is only returned. My test code looks like this ('str' contains a string read in from a file): Code: var ids = str.match(/\w*/g); //var ids = str.split(/\W*/g); task.logmsg("the length of the array is " + ids.length); for (i = 0; i < ids.length; i++) { task.logmsg("ids=[" + i + "]=" + ids[i]); } I can confirm that ids.length is returning 1 (??) The 'task' object comes from a separate library and the 'logmsg' method just writes to the console. My reptilian brain is struggling with reg exps. This shouldn't be difficult to do, but I just can't get it to work. If anyone out there can lend some assistance, it would be greatly appreciated. Thanks, JD 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 Hello, How can i validate string with alphanumeric, space, dash and dot in regular expression ? 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])"); 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? 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. 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 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 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? 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 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! 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) I want a regular expression for Citi where first character should not be a blank space. Thanks in advance 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? 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> 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! 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. |