Regular Expression to make Text Field only hold 0-9 is allowing non numeric | Community
Skip to main content
berlink0304
New Participant
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

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.

New Participant
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.

kautuk_sahni
Employee
October 30, 2017

TundraSteve any further thoughts?

Kautuk Sahni
manoj_devapath
New Participant
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]*)$

Naresh_KatkamAccepted solution
New Participant
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"/>

Employee
October 27, 2017

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