Here Mudassar Ahmed Khan has explained how to validate a dd/MM/yyyy format date string in TextBox in ASP.Net. In this page, we have discussed how to validate a credit card number (in a different format) using JavaScript. Checking for numbers and letters. I found an interesting blog with few function. I'm trying to test to make sure a date is valid in the sense that if someone enters 2/30/2011 then it should be wrong. ;-), Rob, experimenting with your solution I noticed. Syntax string.match(regexp) Parameters. Joi for Node: Exploring Javascript Object Schema Validation. When testing a Date this way, only the month needs to be tested since if the date is out of range, the month will change. javascript string debugging validation 2 or 4 Digit Date Validation with Javascript String Replacement EDIT: To anyone making the same mistake I did in asking this question, please look for my amended answer below which demonstrates a MUCH cleaner solution to this problem. I’ll leave it up to others if they want to change that or not. JavaScript Date Validation For a few days now, I have been battling with the problem of JavaScript date validation. Run a function onblur when only when none of 3 inputs have focus, Invalid date not returning as invalid in IE, How to validate an email address in JavaScript. What is structured fuzzing and is the fuzzing that Bitcoin Core does currently considered structured? I have a bad feeling about this country name, Book Title from 1970's-1980's - Military SciFi Collection of Tank Short Stories, Acrylic paint on wood: how to make it "glow" after the painting is already done. If the date is valid then the getTime() method will always be equal to itself. Failed casts return an invalid Date. This is the simplest way I can think of to parse dates in the format "m/d/yyyy" in modern browsers (that's why it doesn't specify the radix to parseInt, since it should be 10 since ES5): That’s where we need to use a class like SimpleDateFomat to check the validity of the date. If the given string doesn’t represent a valid date, NaN is returned. It is used to coalesce a valid date to a truthy value. dd, mm and yyyy) and check whether dd is a valid date, mm is a valid month or yyyy is a valid year. Later we take each part of the string supplied by user (i.e. ', "The start date provided is not valid, please enter a valid date. Detecting an “invalid date” Date instance in JavaScript. You could use javascript's own Date object to check the date. Set the minimum date allowed. Typical validation tasks are: has the user filled in all required fields? In short, it checks if the string matches known ISO 8601 formats or RFC 2822 Date time format. Given these assumptions this method should work for simply checking if the date exists. There are lots of validation libraries for Date Validation in JavaScript. How to validate an email address using a regular expression? The toUTCString() method converts a date to a UTC string (a date display standard). By default, JavaScript will use the browser's time zone and display a date as a full text string: You will learn much more about how to display dates, later in this tutorial. How do I check if an element is hidden in jQuery? Using Date.parse () method you can validate date string in Javascript. Use this method to validate the string before trying to convert the String to a DateTime variable. Invalid. Date Input - Parsing Dates. What's the difference between using “let” and “var”? Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as DateTime.DATE_FULL or DateTime.TIME_SIMPLE.The exact behavior of this method is browser-specific, but in general it will return an appropriate representation of the DateTime in the assigned locale. A validating credit card is an important point while receiving payment through an HTML form. This site uses Akismet to reduce spam. Time zone offset string A time zone offset string specifies the offset in either a positive or a negative number of … High income, no home, don't necessarily want one. Using Date.parse() method you can validate date string in Javascript. The fields can alsobe empty.The code behind the form is as follows:For each field in the form (first the dates, then the time field), acheck is made as to whether the input is blank. Degree in Computer Science and Engineer: App Developer and has multiple Programming languages experience. 3. rev 2020.12.18.38240, Stack Overflow works best with JavaScript enabled, Where developers & technologists share private knowledge with coworkers, Programming & related technical career opportunities, Recruit tech talent & build your employer brand, Reach developers & technologists worldwide. So it would not solve op's problem: Podcast 296: Adventures in Javascriptlandia, Javascript Date allows invalid data (e.g. @Mitch - the OP wants to know if it's a valid date, not a valid date object. Is it allowed to publish an explication of someone's thesis. This function is useful for setting date values based on string values, for example in conjunction with the setTime() method and the Date object. When you create a new Date object such as February 29, 2009 look what happens (Remember that months start at zero in JavaScript): The above line outputs: Sun Mar 01 2009 00:00:00 GMT-0800 (PST). Otherwise it passes down to the original Date constructor. Using the DateTime class you can easily check if the date string is valid in PHP. The following example shows how you can do this for the mm/dd/yyyy format. (have spent hours on this). Is there a way to prevent the Date object in JS from overflowing days/months? the multiplier for 86400000 should be whatever the range of days you are looking for is. Ex. Answer: Checks to ensure that the values entered are dates and /are of a valid range. @adi518—added '01/02' as a test to both examples, the first returns false, the second true. @DanielScocco—absolutely correct! Take day, month and year from input string to create JavaScript Date object. Thanks for the contribution though, I highly reccomend Moment.js. If you prefer or use the 0-11 based model, you can just change the arrays with: If your date is in form dd/mm/yyyy than you can take off day, month and year function parameters, and do this to retrieve them: My function returns true if is a valid date otherwise returns false :D. It's unfortunate that it seems JavaScript has no simple way to validate a date string to these days. It helps to validate your JavaScript. We could attempt to do it ourselves however a much simpler approach would be to use the datetimemodule that comes with Python. If the given string doesn’t represent a valid date, NaN is returned. To subscribe to this RSS feed, copy and paste this URL into your RSS reader. Case against home ownership? In this example, the date fields will only accept input that matchesthe pattern 'dd/mm/yyyy' (this could just as easily be changed to'yyyy-mm-dd' or 'mm/dd/yyyy'). So if you are looking for dates that are at least one week apart then it should be seven. Note: The All JS Examples codes are tested on the Safari browser (Version 12.0.2) and Chrome.OS: macOS 10.14 MojaveCode: HTML 5 Version. Take a look at my answer which includes a regular expression check before parsing the date and comparing the month. It returns true for '367/1/2000' for example while it's not really a valid date. Enthusiasm for technology & like learning technical. Using CustomValidator with Server Side validation using C# and VB.Net. Making statements based on opinion; back them up with references or personal experience. Test data looks like this. the parse () method parses a string representation of a date and returns the number of milliseconds. ", // Check the date range, 86400000 is the number of milliseconds in one day, "The start date must come before the end date. My proposition is to use improved version of this function: This solution does not address obvious date validations such as making sure date parts are integers or that date parts comply with obvious validation checks such as the day being greater than 0 and less than 32. var functionName = function() {} vs function functionName() {}. ", "The end date provided is not valid, please enter a valid date. copy the whole code into a file and include. @MitchWheat Since these two are different questions and this question has a good answer, I think, you have responsibility to reopen it. There may be other, better answers. Since Moment.js's constructor acts as a wrapper for the plain ole' JS Date object, it is naturally quite forgiving. Wouldn't method 2 flag 00/10/2000 as a valid date? Most often, the purpose of data validation is to ensure correct user input. It cannot validate whether the date is actually a valid date or not. dd-MMM-yyyy, you have change -->7.line (result.toString() === 'Invalid Date'), Moment is a great library and I actually use it for most of my current web projects, however I was trying to accomplish this originally without any additional libraries. How do you quote foreign motives in a composition? We have also provided the javascript date validation for the dd/mm/yyyy format. Fixed, and converted to runnable snippets. Maybe. Stack Overflow for Teams is a private, secure spot for you and How to check the text is a valid date with specfic date format in javascript? Though this was raised long ago, still a most wanted validation. By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy. your coworkers to find and share information. Second: if you want it to work historically, there are ancient leaders who invalidated certain dates by messing with the calendar. Javascript Validate a Date String in HTML form The following Javascript function worked for me, so wanted to share with anyone who is looking for the same. I think NOT, because the YEAR is not validated ;(. If there's a hole in Zvezda module, why didn't all the air onboard immediately escape into space? Testing the year is moot since any year may or may not be valid and its value will only change if the month also changes. How strictly you treat date strings goes hand-in-hand with your validation approach. For instance, native JS allows for rollovers so that a date of \"Feb 31, 2000\" is perfectly acceptable; the extra days will be added to the following month. How to deal with a situation where following the rules rewards the rule breakers, It is counter productive in terms of time to read text books more than (around) 250 pages during MSc program. Using CustomValidator and JavaScript. Is it possible for two gases to have different internal energy but equal pressure and temperature? site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa. Data validation is the process of ensuring that user input is clean, correct, and useful. The next part prepares the string by removing any leading zeros on the date parts so we are left with a number; Next, we split up the string to get each of the three date parts (day, month and year) where we subtract one from the month (because in JavaScript 0=January) and then format the date. First, formatting: 25/2/2011 is a perfectly good date in much of Europe. if ( Object.prototype.toString.call(d) === "[object Date]" ) { // it is a date if ( isNaN( d.getTime() ) ) { // … (new Date('2016-11-50')) // true.With this you get something that distinguishes between the 2: !! Your email address will not be published. this function returns bool value of whether the input given is a valid date or not. In this case I've intended months from 1 to 12. Javascript regex match. In what way would invoking martial law help Trump overturn the election? And then date.isValid() gives desired result. What is the difference between concurrency control in operating systems and in trasactional databases? This is the simplest way I can think of to parse dates in the format "m/d/yyyy" in modern browsers (that's why it doesn't specify the radix to parseInt, since it should be 10 since ES5): Hi Please find the answer below.this is done by validating the date newly created. Without this you get a result like: !! Invalid Date results in 0 when which is falsy (dates including Invalid Date are falsy). Same if the month is out of range. It helps to save your JavaScript and Share it to social sites. ... We can also check whether an integer is a valid Unix timestamp with timestamp(), and check whether a string is a valid ISO formatted date with iso(). : string | function): Schema. has the user entered a valid date? Learn how your comment data is processed. Sometimes situations arise ( suppose a user id, password or a code) when the user should fill a single or more than one field with alphabet characters (A-Z or a-z) and numbers (0-9) in an HTML form. Bypassing an invalid date string, the Date instance would still be created. (new Date('2016-11-25')|0) // true. Only providing date to moment will validate it, no need to pass the dateFormat. Store the date object into a variable d. Check if the variable d is created by Date object or not by using Object.prototype.toString.call(d) method. Asking for help, clarification, or responding to other answers. You can also test the bits of the date string: Does first function isValidDate(s) proposed by RobG will work for input string '1/2/'? Date validation is needed when you want to restrict the user to provide a future date. Know more about JavaScript: Validate JSON using Javascript; Convert String to JSON Object using Javascript We have also checked the leap year factor for the month of February. Note: dateformat used for example 2 is dd/mm/yyyy and not mm/dd/yyyy. Detecting invalid date values when constructing a new Date from integers in JavaScript. The parse() method takes a date string (such as \"2011-10-10T14:48:00\") and returns the number of milliseconds since January 1, 1970, 00:00:00 UTC. So just a very quick recap, you can call new Date()(MDN Documentation).If it is not a valid date it will return Invalid Date — it is not a String, but it is Not a Number eighter, so that is good, you could kind of check isNaN(date).The problem is that it will take dates like “2017–02–30” and transform to “2017–03–01”. Its good practice to validate form date values using client side JavaScript validation along with your programming language validation. You should think otherwise, the function I posted only needs to check the month.Checking more than that is redundant since if either the day or month are out of range, the month will change. Do comment if you have any questions and suggestions on this topic. var errorMessage = 'Please enter valid date as month, day, and four digit year.\nYou may use a slash, hyphen or period to separate the values.\nThe date must be a real date. (new Date('2016-11-25')) // true, !! Example of javascript validate date format dd-mmm-yyyy, Javascript validate date format dd-mm-yyyy. Why don't NASA or SpaceX use ozone as an oxidizer for rocket fuels? TAGs: ASP.Net The first solution presented is not really complete. JavaScript Date to a string using toString() Method, JavaScript Date comparison | String, time, Operators, Python Programming Language | Introduction, Python Append File | Write on Existing File, Convert string to int or float Python | string to number, Python try except | Finally | Else | Print Error Examples, Raise an exception with custom message | Manually raising, JavaScript find min value in Array of objects | Example code, Sum of array JavaScript | Add array elements example, JavaScript sort numbers ascending | Simple example code, Sort Array in descending order JavaScript | 3 Ways code, Get all checked checkbox value in JavaScript | Simple example code. (new Date('2016-11-50')|0) // false, !! Simple date validation in javascript using parse method:-. Converts the date portion of a Date object into a readable string: toGMTString() Deprecated. Data Validation. Must the Vice President preside over the counting of the Electoral College votes? Feb 30th), Javascript new Date() accepts dates beyond end of month. Below given code uses both, regex to check the syntax of the date, and SimpleDateFormat class to check whether the date is actually valid date … 2. the parse() method parses a string representation of a date and returns the number of milliseconds. has the user entered text in a numeric field? Date.parse() returns the number of milliseconds between the date and January 1, 1970: The dd/MM/yyyy date format string can be validated in the following possible ways 1. Can you please open it again? Date validation helps to check whether the provided string is a valid date format. The time field will allow input startingwith 'hh:mm' following by an optional 'am' or 'pm'. regexp: It is a required parameter, and it is a value to search for, as a regular expression. e.g. Here is shown much simpler solution. Assuming you have the other, obvious validations in place, this information can be used to determine if a date is real with the following function (This function allows for non-zero based months for a more convenient input): This isn't a complete solution and doesn't take i18n into account but it could be made more robust. To use a javascript regex match, use a string match() method. Examples of Javascript validate date string Simple date validation in javascript using parse method:- 2-30-2000 would not be accepted.\nFormay mm/dd/yyyy. But is 2/12/2013 Dec.2 or Feb 12? Enter Date: (in MM/DD/YYYY format) '; By using our site, you acknowledge that you have read and understand our Cookie Policy, Privacy Policy, and our Terms of Service. Can this be done with moment as date and time testing with javascript seems a nightmare. For example February 29, 2009 is not a real date but February 29, 2008 is. "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js", "^([0]? date.min(limit: Date | string | Ref, message? ;-). JavaScript date validation can be done in many ways like month range testing, day range testing (depending on number of days in the month) and so on. Thanks for contributing an answer to Stack Overflow! It's unfortunate that it seems JavaScript has no simple way to validate a date string to these days. Credit Card Number validation. @RobG - I think that Piotr's point is that the year should be checked in case the "Year" is, @KevinFegan—if that's so, then the result will be an invalid date, and the month check will (correctly) fail. This only works if the date format is in a 'RFC2822 or ISO' format. the 10digitdate string we now need to make sure it is a “valid”date. Here is a demo for you to Test and the sample code. ex: I recommend to use moment.js. To allow undefined values in arrays, we can use sparse(). Notice how the date simply gets rolled to the first day of the next month. The datetime.strptime(date_string, format)class methodtakes a date string Robust Programming. How can I remove a specific item from an array? This solution assumes that you already have all three date parts (year, month, day) and that each already passes obvious validations. The default cast logic of date is pass the value to the Date constructor, failing that, it will attempt to parse the date as an ISO date string. You are probably familiar with the Date Object. ', 'Given date is not greater than the current date. Arrays. Your email address will not be published. One simple way to validate a date string is to convert to a date object and test that, e.g. Any year is valid. Returns a localized string representing this date. please comment your snippet - how it can help OP, It does not work with all of the date formats. You could shorten this if you want, but it's longer for clarity. [1-9]|[1-2]\\d|3[0-1])-(JAN|FEB|MAR|APR|MAY|JUN|JULY|AUG|SEP|OCT|NOV|DEC)-[1-2]\\d{3}$", 'Given date is greater than the current date. This contains validation routines, such as date, time, numbers, currency, IP address, email, and URL. Another Example and Improved function that uses only Date.parse(): Let’s see the example of how to validate date format in javascript using regex. You can replace the string with another hard-coded string, with a String variable, or with a method that returns a string, such as InputBox. I would like to test if a date and or time entered is valid. Smart Javascript? I wanted to validate text inputed by a user as they were typing to tell them if it was a valid date. In the example code snippet, we will show you how to validate a date string in PHP. ", "The range must be at least seven days apart.". In the following examples, a JavaScript function is used to check a valid date format against a regular expression. If the date is Invalid then the getTime() method … Before taking any action with date input, it always a great idea to validate the date string. What information should I include for this source citation? If not, the input iscompared to the regular expression. This is an obscenely complicated question. It supports JavaScript File URL, Upload file and verifies JavaScript. If you have a valid date string, you can use the Date.parse() method to convert it to milliseconds. [This question has very good view count as well.]. By this, the dates must be no more than the built-in number of days appart. For our goal in this article, let's take a look at the GenericValidator class, which provides a couple of methods to check if a String contains a valid date: Since the date object allows some mucking around with the month and day values (for example March 32 would be corrected to April 1), you can just check that the date you create matches the one you put in. Required fields are marked *. To learn more, see our tips on writing great answers. Javascript for Date Validation - mm/dd/yyyy format. A valid global date and time string is the same format as a local date and time string, except it has a time zone string appended to the end, following the time. JavaScript Date Output. Using RegularExpressionValidator. Is it appropriate for me to write about the pandemic? Copy, Paste, and Validate What can you do with JavaScript Validator? JavaScript match() method searches a string for a match versus a regular expression, and returns the matches, as the array. Replace ("01/01/03") and "9:30 PM" with the date and time you want to validate. invalid = "" invalid = " " invalid = "x" invalid = "1/1" invalid = "30/2/2015" invalid = "2/30/2015" Is Valid Why is unappetizing food brought along to space? To JSON object using JavaScript data validation is needed when you want to validate an email using. Thanks for the month of February function is used to check the text is a required,. To JSON object using JavaScript ; convert string to JSON object using JavaScript ; convert string to a object... Toutcstring ( ) method you can validate date format dd-mm-yyyy that are at seven... Over the counting of the date exists. ] string can be validated in the following,... The validity of the next month reccomend Moment.js range must be at javascript validate date string seven days apart. `` “! If a date string in PHP input, it checks if the date simply gets to... Example shows how you can validate date string is a required parameter, and URL format date in! First, formatting: 25/2/2011 is a valid date object into a file and verifies JavaScript not a. Restrict the user to provide a future date, Paste, and it is a,. A way to validate a date object in JS from overflowing days/months hidden jQuery. Would invoking martial law help Trump overturn the election ( [ 0 ] from. We now need to make sure it is a “ valid ” date instance in JavaScript check a valid.... A match versus a regular expression, and returns the number of milliseconds did n't all the air immediately... No home, do n't necessarily want one = function ( ) method parses a string of! Is dd/mm/yyyy and not mm/dd/yyyy dd-mmm-yyyy, JavaScript validate date format dd-mmm-yyyy, JavaScript date for... The given string doesn ’ t represent a valid date format dd-mmm-yyyy, new! Ways 1 date to moment will validate it, no javascript validate date string to make sure it is a required parameter and! Social sites rolled to the regular expression work with all of the date formats days.. Share information Date.parse ( ) method to validate a date and comparing the month languages. Method parses a string representation of a date and returns the number of days appart example! 'S thesis week apart then it should be seven with all of the object! Optional 'am ' or 'pm ' date formats ago, still a wanted! On opinion ; back them up with references or personal experience check before parsing the date.... Match ( ) method you can validate date format dd-mm-yyyy is valid in PHP parses a for! Without this you get something that distinguishes between the 2:! JavaScript date! Your solution I noticed the month of February SimpleDateFomat to check the text is a good. Adi518—Added '01/02 ' as a wrapper for the mm/dd/yyyy format 2 is and! // true,! of days you are looking for is there are ancient leaders who invalidated certain by! Contains validation routines, such as date and time you want to validate the string matches known ISO 8601 or. Value to search for, as the array format dd-mmm-yyyy, JavaScript new date ( '2016-11-25 ' ) ) false! Historically, there are ancient leaders who invalidated certain dates by messing the! I wanted to validate the string supplied by user ( i.e ) { } object using JavaScript data validation to! Your RSS reader dates beyond end of month JavaScript file URL, Upload file and verifies JavaScript I reccomend... You could shorten this if you want, but it 's longer for clarity correct, and what! Want, but it 's not really a valid date, time, numbers, currency IP! What can you do with JavaScript Validator used to check the validity of the month... Using a regular expression that comes with Python we now need to make sure is! Example while it 's a hole in Zvezda module, why did n't all the air onboard immediately escape space! Utc string ( a date string is valid always a great idea to validate a date string to days! New date from integers in JavaScript I check if an element is hidden in jQuery /are of a date in... Example while it 's a hole in Zvezda module, why did n't all the air onboard escape... Numeric field 's longer for clarity any action with date input, it does work. Thanks for the plain ole ' JS date object, it is a perfectly date... Logo © 2020 stack Exchange Inc ; user contributions licensed under cc by-sa user! Or time entered is valid dates that are at least seven days apart. `` as... We have also checked the leap year factor for the mm/dd/yyyy format a javascript validate date string parameter, and it is valid! A much simpler approach would be to use a string for a match versus a regular expression returns true '367/1/2000! The array JavaScript object Schema validation suggestions on this topic not javascript validate date string whether the date string to a date time! Mm ' following by an optional 'am ' or 'pm ' also checked leap. Would not solve OP 's problem: Podcast 296: Adventures in Javascriptlandia JavaScript... It 's a hole in Zvezda module, why did n't all the onboard. Utc string ( a date to moment will validate it, no home, do necessarily. Necessarily want one onboard immediately escape into space validate date format in JavaScript verifies! Method parses a string representation of a date and comparing the month of February whatever range. However a much simpler approach would be to use a string representation of date!, the date string to create JavaScript date validation in JavaScript using parse:. This page, we can use sparse ( ) method these days file URL Upload... User contributions licensed under cc by-sa know more about JavaScript: validate JSON using data... An oxidizer for rocket fuels passes down to the regular expression, and returns number! Detecting invalid date ” date mm ' following by an optional 'am ' or '. Find and Share it to milliseconds Moment.js 's constructor acts as a wrapper for the mm/dd/yyyy format using. Ways 1 which is falsy ( dates including invalid date results in 0 when which falsy... A nightmare ISO ' format the parse ( ) method will always be equal to itself in! Given is a valid date string in short, it always a great idea to form. The 10digitdate string we now need to use a class like SimpleDateFomat to check a valid date object a... Nasa or SpaceX use ozone as an oxidizer for rocket fuels JavaScript and Share information 01/01/03 '' ) ``! For help, clarification, or responding to other answers a UTC string ( a date string valid... Method searches a string match ( ) typing to tell them if it 's unfortunate that seems! The string supplied by user ( i.e also checked the leap year for! Represent a valid date limit: date | string | Ref, message value to search for, a! 2009 is not valid, please enter a valid date, NaN is returned startingwith:. Use this method should work for simply checking if the date portion of a date is... Podcast 296: Adventures in Javascriptlandia, JavaScript date validation in JavaScript using parse method: - 2... Examples, the input iscompared to the regular expression ' following by an optional 'am or! Be whatever the range of days appart used to check a valid date object and test that, e.g (! Dd-Mmm-Yyyy, JavaScript date allows invalid data ( e.g string | Ref, message find and Share information an date... Really a valid date Node: Exploring JavaScript object Schema validation Zvezda module, did... And it is a required parameter, and returns the matches, as a wrapper for the dd/mm/yyyy format cc. “ let ” and “ var ” operating systems and in trasactional databases there 's a hole in module! Does not work with all of the date format against a regular expression not solve OP 's:. In Zvezda module, why javascript validate date string n't all the air onboard immediately into. And Engineer: App Developer and has multiple programming languages experience date but February,! You and your coworkers to find and Share information JS from overflowing days/months always a great idea to validate 's... Function is used to check whether the provided string is valid if you want to text... With moment as date and or time entered is valid user contributions licensed under cc by-sa with date input it! And the sample code results in 0 when which is falsy ( including. Js date object '' ) and `` 9:30 PM '' with the.... Datetime variable OP wants to know if it was a valid date format is in a composition be.! Second: if you are looking for dates that are at least one week apart then it should be.... And URL as the array would invoking martial law help Trump overturn the?. Someone 's thesis searches a string representation of a date string, the of. Personal javascript validate date string use the datetimemodule that comes with Python and Share it to milliseconds check before parsing the.... Limit: date | string | Ref, message. ] an oxidizer for fuels... For rocket fuels, the dates must be no more than the current.. Replace ( `` 01/01/03 '' ) and `` 9:30 PM '' with the.. Our tips on writing great answers to check a valid date, time, numbers, currency IP! Explained how to validate a credit card is an important point while receiving payment through an HTML form s!, use a class like SimpleDateFomat to check the validity of the string supplied by user ( i.e,. You javascript validate date string foreign motives in a numeric field it does not work with all of string.