Regular Expression to make Text Field only hold 0-9 is allowing non numeric | Community
Skip to main content
berlink0304
Level 2
September 22, 2017
Solved

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

  • September 22, 2017
  • 6 replies
  • 6431 views

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.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Naresh_Katkam

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"/>

6 replies

Adobe Employee
October 27, 2017

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

Naresh_KatkamAccepted solution
Level 2
October 27, 2017

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"/>

manoj_devapath
Level 5
October 29, 2017

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]*)$

kautuk_sahni
Community Manager
Community Manager
October 30, 2017

TundraSteve any further thoughts?

Kautuk Sahni
Level 2
October 30, 2017

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.

Adobe Employee
October 30, 2017

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.