Expand my Community achievements bar.

SOLVED

Regular Expression to make Text Field only hold 0-9 is allowing non numeric

Avatar

Level 2

Hello,

I need a field in which a user is limited to a 3 digit entry which allows the numbers 0-9.

Currently I am using a text field as my object on my form, so I can limit the length to three characters.

I have looked into regular expressions in order to do what I want, but the problem is that I still can enter ".", "-", and "-".  That's the numpad Decimal, numpad Minus, and the dash keys.  I am unsure why these are allowed, but I need them to not be, as it allows a user to enter a negative or a decimal number into the field.  I imagine something isn't quite right with my regex or how I'm applying it.

If there's a better way of going about this, I'm all ears.

1 Accepted Solution

Avatar

Correct answer by
Level 2

Hi,

1). Using Number Field

For your requirement use XTYPE as numberfield. Add property to that node/field as maxValue.(Best Approach )

Example:

<limit jcr:primaryType="cq:Widget"
  fieldLabel="Limit"
  name="./limit"
  maxValue="9"
  xtype="numberfield"/>

2). Using Regex.

<limitjcr:primaryType="cq:Widget"
  fieldLabel="Limit"
  name="./limit"
  regex="/[0-9]{1}$/"
  regexText="Enter 0-9 values only."
  xtype="textfield"/>

View solution in original post

6 Replies

Avatar

Level 8

Why are you not using a numeric field and setting the Maximum Number of Digits to 3?

Avatar

Correct answer by
Level 2

Hi,

1). Using Number Field

For your requirement use XTYPE as numberfield. Add property to that node/field as maxValue.(Best Approach )

Example:

<limit jcr:primaryType="cq:Widget"
  fieldLabel="Limit"
  name="./limit"
  maxValue="9"
  xtype="numberfield"/>

2). Using Regex.

<limitjcr:primaryType="cq:Widget"
  fieldLabel="Limit"
  name="./limit"
  regex="/[0-9]{1}$/"
  regexText="Enter 0-9 values only."
  xtype="textfield"/>

Avatar

Level 6

berlink0304

^(0|[1-9][0-9]*)$ this for two digit between 0 to 9 and also allow 0

ref: Regex pattern for numeric values - Stack Overflow

it think  you can try ^(0|[1-9][0-9][0-9]*)$

Avatar

Administrator

TundraSteve any further thoughts?



Kautuk Sahni

Avatar

Level 2

HI,

1). Using Regex

below example will allows 0-99 values only.

it will match your requirement.

<limit jcr:primaryType="cq:Widget"

  fieldLabel="Limit"

  name="./limit"

  regex="/^([0-9]{2}|[0-9]{1})$/"

  regexText="Enter 0-99 only.Number's only"

  xtype="textfield"/>

2). Using numberfield

you can free to use Number field as XTYPE. it works better for you.

If you give maxValue as 99. that field allow 0-99 values only.

Example:

<limit jcr:primaryType="cq:Widget"

  fieldLabel="Limit"

  name="./limit"

  maxValue="99"

  xtype="numberfield"/>

Thanks.

Avatar

Employee

As mentioned above best approach is to use the numeric field. If server is 6.3 onwards then there is a property (Maximum Number of Digits) to set the maximum no. of allowed digits in numeric field that can control the limit of entered digits.

numeric_field_properties.png