I am trying to create a validation expression for my regular expression validator control. I am having trouble understanding how to add things to the validation expression. I need it to accept any input (numbers, characters, any special characters) and limit the input to 200. I have this so far:
<asp:RegularExpressionValidator ID="commentRegularExpressionValidator" runat="server" ErrorMessage="Comment box exceeds 200 characters."
ControlToValidate="TextBoxComments"
ValidationExpression="^[a-zA-Z''-'\s\d ^!##$%^&*()_+=-]{0,200}$"
Text="*"
CssClass="errorMessage"
SetFocusOnError="true"
Display="Dynamic"
ValidationGroup="infoGroup"></asp:RegularExpressionValidator>
When I try to add more special characters to the expression, I start getting errors. Can somebody help clarify the format/structure of adding special characters to this validation expression. Thank you
If you need only to accept any input (numbers, characters, any special characters) and limit the input to 200 then Set only property of Textbox like --> MaxLength="200"
Or if you want to show message then use javascript or Jquery like below function on Keydown event of textbox-->
function CountCharacters() {
var maxSize = 200;
if (document.getElementById('<%= txt_handlinginfo.ClientID %>').value != '') {
var len = document.getElementById('<%= TextBoxComments.ClientID %>').value.length;
if (len > maxSize) {
alert('error message');
return false;
}
}
}
You can use .{1,200} regular expression.
. dot character means any character
{1,200} means match 1 or more character upto max 200 characters.
<asp:RegularExpressionValidator ID="commentRegularExpressionValidator" runat="server"
ErrorMessage="Comment box exceeds 200 characters."
ControlToValidate="TextBoxComments"
ValidationExpression=".{1,200}"
Text="*"
CssClass="errorMessage"
SetFocusOnError="true"
Display="Dynamic"
ValidationGroup="infoGroup">
</asp:RegularExpressionValidator>
Related
I want the regex for password textbox with below criteria
(a) At least One character
(b) At least One special character
(c) At least One numeric value
(d) and the length should be greater than 8 digit
Tried something like below and it worked.
Solution 1:-
function checkPassword(password) {
var pattern = /^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/;
if (!pattern.test(password)) {
$(".password_error").show();
} else {
$(".password_error").hide();
}
}
Solution 2:-
<asp:TextBox ID="txtPolicy4" runat="server"></asp:TextBox><br />
<asp:RegularExpressionValidator ID="Regex4" runat="server" ControlToValidate="txtPolicy4"
ValidationExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$#$!%*?&])[A-Za-z\d$#$!%*?&]{8,}"
ErrorMessage="Password must contain: Minimum 8 characters atleast 1 UpperCase Alphabet, 1 LowerCase Alphabet, 1 Number and 1 Special Character" ForeColor="Red" />
Both the solution worked for me, but I preferred the second solution.
I have regular expression in regular expression validator control. It supports telephone number like this for example +359111111111. The symbol + is mandatory. I want to allow with the start of 0 or + and then the phone number.
What I have now is:
<asp:RegularExpressionValidator ID="revGroupTelephone" runat="server" ValidationExpression="^\+[1-9]{1}[0-9]{7,11}$"
Text="*" ErrorMessage="Wrong number" ControlToValidate="tbGroupTelephone" ValidationGroup="validOrg" />
You can use | for an "or" clause : see msdn
So I would replace
\+
by
(\+|0)
I have a requirement to do multiple validations on a file upload control. I have the following code for now:
<asp:Button id="btnUploadFile" class="ms-ButtonHeightWidth" runat="server" OnClick="UploadFile_Click" Text="Upload File"></asp:Button>
<asp:RequiredFieldValidator ID="InputFileValidator" ControlToValidate="InputFile" Text="You must specify a value for the required field" runat="server" />
I need to add this ^(?!..)(?!...)(?=.[^.]$)[^\"#%&:<>?\/{|}~]{1,128}$ Regex validation from here in addition to the required field validator. How do I do this?
UPDATE:
You could probably adapt the regex instead to allow for backslashes up to the filename and disallow them in the filename, but the complexity of such a beast would not likely be worth the time and effort to construct it.
Since the original regex was for validating a textbox where the user was typing a filename (and not a file input where the name is generated by the OS), I think the better course of action would be to use an <asp:CustomValidator> control instead and split the value on \ to get more easily parseable chunks.
The primary advantage of this approach is that you can break that complex regex down into multiple simpler (and more easily understood) regexes and test them one at a time against the filename.
<script type="text/javascript">
var validateFile = function validateFile(sender, args) {
'use strict';
var fileWithPath, //split on backslash
fileName = fileWithPath[fileWithPath.length - 1], //grab the last element
containsInvalidChars = /["#%&*:<>?\/{|}~]/g, //no reason to include \ as we split on that.
containsSequentialDots = /[.][.]+/g, //literal .. or ... or .... (etc.)
endsWithDot = /[.]$/g, // . at end of string
startsWithDot = /^[.]/g, // . at start of string
notValid = false, //boolean for flagging not valid
valid = fileName.length > 0 && fileName.length <= 128;
notValid = containsInvalidChars.test(fileName);
notValid = notValid || containsSequentialDots.test(fileName);
notValid = notValid || endsWithDot.test(fileName);
notValid = notValid || startsWithDot.test(fileName);
args.IsValid = valid && !notValid;
};
</script>
<asp:FileUpload ID="InputFile" runat="server" />
<asp:RequiredFieldValidator ID="rqfvInputFile" runat="server" ControlToValidate="InputFile" ErrorMessage="File is required"></asp:RequiredFieldValidator>
<asp:CustomValidator ID="cstvInputFile" runat="server" ControlToValidate="InputFile" ClientValidationFunction="validateFile" ErrorMessage="File is not a sharepoint file"></asp:CustomValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
One caveat to the above is that the filename chunks are split on \, which is not likely to be the path separator for Unix or Mac systems. If you need this to run on those clients as well, you'll likely have to split on either \ or / which you should be able to do with this:
var filePath = args.Value.split(/\\|\//g); //not tested.
ORIGINAL:
Add in an <asp:RegularExpressionValidator> control and set the ControlToValidate property to your file uploader control.
You can have as many validator controls as you like pointed towards a single input.
Just set the appropriate properties (such as the ValidationExpression in the <asp:RegularExpressionValidator>) and make sure the ControlToValidate property is pointed towards the input to validate.
Example:
<asp:Button id="btnUploadFile" class="ms-ButtonHeightWidth" runat="server" OnClick="UploadFile_Click" Text="Upload File"></asp:Button>
<asp:RequiredFieldValidator runat="server" ID="RequiredInputFileValidator" ControlToValidate="InputFile" Text="You must specify a value for the required field" />
<asp:RegularExpressionValidator runat="server" ID="RegexInputFileValidator" ControlToValidate="InputFile" ErrorMessage="Only valid SharePoint files are allowed."
ValidationExpression="^(?!..)(?!...)(?=.[^.]$)[^\"#%&:<>?\/{|}~]{1,128}$" />
You may also want to look into Validation groups
I would like to have a regular expression validator for validating zip code. My zip code length varies up to 9 digits. User can enter either 5 or 9. I should valid if he enters 5 digits or 9 digits. Any thing other than that I would like to raise error.
I tried this expression
ValidationExpression="\\d{5}(-\\d{4})?$"
This is my design I am using rad controls
<telerik:RadMaskedTextBox Mask="#####-####" runat="server" ID="txtcontactZipCode"
Width="200px" ValidationGroup="contactValidation">
</telerik:RadMaskedTextBox>
<asp:RequiredFieldValidator runat="server" ID="rqrdcontactZipCode" ValidationGroup="contactValidation" Display="Dynamic"
ForeColor="Red" ControlToValidate="txtcontactZipCode" ErrorMessage="Zip Code is required"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="regexpcontactZipCode" runat="server" ControlToValidate="txtcontactZipCode"
ValidationGroup="contactValidation" Display="Dynamic" ForeColor="Red" ErrorMessage="Should be 5 or 9 Digits"
ValidationExpression="\\d{5}(-\\d{4})?$"></asp:RegularExpressionValidator>
But I am unable to valid if I enter as follows 11111-____
Can some one help me..
The issue is that your regular expression indicates the four digits must exist if you have the dash. Generally that would be okay but since you're using an input mask the dash always exists, even when it's only five digits. Try the following expression.
ValidationExpression="\d{5}-?(\d{4})?$"
You should only use \\ to escape when you're setting it through C# code-behind.
Use this...
ValidationExpression="\d{5}(-\d{4})?$"
If you were setting it through the C# in the background, then you would need \\d because \d would be considered to be a control character...
txtcontactZipCode.ValidationExpression = "\\d{5}(-\\d{4})?$";
This is unless you precede the string with #, in which case it could be done as...
txtcontactZipCode.ValidationExpression = #"\d{5}(-\d{4})?$";
What about :- [0-9]{5}(\-[0-9]{4})?
[0-9] Any number between 0 and 9, {5} = only 5 characters; Altarnativly \d depending on what you find easier to read.
( ) - Create a group
\-[0-9]{4} A Dash followed by 4 numbers
? Optional - Zero or One
Use this method:
public static boolean validateZip( String zip )
{
return zip.matches( "\\d{5}" );
}
My XSLT shows that there is error in the below line, but i could not figure it out
<asp:RegularExpressionValidator ID="validatorEmail{#id}" runat="server" Display="Dynamic" ControlToValidate="{#id}" ErrorMessage="username#domain.com"
ValidationExpression="^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))#((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$" />
Error Message:
Expected token '}', found ','. ...+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2 -->,<-- }))#((([0-1]?[0-9]{1,2}|25[0-5]|... Forms.xslt
What is wrong with this?
In XSLT { and } are used to inject dynamic values in attribute value templates. You need to double them to escape them in your regular expression:
ValidationExpression="^(([\w-]+\.)+[\w-]+|([a-zA-Z]{{1}}|[\w-]{{2,}}))..."