2
str = "33d4m"; //d for days and h for hours and m for min
patt=/^[1-9]+d/i;
result=patt.test(str);
document.write("Returned value: " +  result);

I want result return true if and only if there is one digit before d, i.e;less than 10days remaining or a few hours remaining like i want return true also on

str = "23h5m"  

if two digit before d then return false
if two digit before h then return true.
Where i am going wrong.

Wasim A.
  • 9,660
  • 22
  • 90
  • 120

3 Answers3

4

You could try this:

patt=/^\d{1,2}h|^\dd/i

It means:

   Match 1 or 2 digits followed by the literal 'h' 
OR match a single digit followed by the literal 'd'
Robbie
  • 18,750
  • 4
  • 41
  • 45
1

i think something like this would work:

patt=/^[1-9][dh]/i
Joseph
  • 117,725
  • 30
  • 181
  • 234
1

The plus means "at least one" - remove it. You may also want to use [0-9] for all digits, but that is just a guess.

patt=/^[1-9]d/i;
Dennis
  • 32,200
  • 11
  • 64
  • 79
  • correct, if str = "23h34M" then it should also return true. is that possible – Wasim A. Apr 21 '12 at 03:30
  • this comment makes no sense, there is no correlation between it return false for 33d4M but true for 23h34M. to have a regex work you need a pattern...what's the pattern? – Michael Frederick Apr 21 '12 at 03:36
  • pattern is [1-9]d or [1-9][1-9]h , basically d for days and h for hours. i need return true if days are less than 10 or few hours left – Wasim A. Apr 21 '12 at 03:38