Now, I need a very specific validation of a field called 'NIF', wich is the identifier of a tax-paying company in my country. And I need some help to make a regular expression to use like I did in the above code.

So I found an old javascript code online that validates 'NIF':

function IsValidNIF(nif){ var c; var checkDigit = 0; //Check if is not null, is numeric and if has 9 numbers if(nif != null && IsNumeric(nif) && nif.length == 9) { //Get the first number of NIF c = nif.charAt(0); //Check firt number is (1, 2, 5, 6, 8 or 9) if(c == ‘1' || c == ‘2' || c == ‘5' || c == ‘6' || c == ‘8' || c == ‘9') { //Perform CheckDigit calculations checkDigit = c * 9; var i = 0; for(i = 2; i <= 8; i++) { checkDigit += nif.charAt(i-1) * (10-i); } checkDigit = 11 - (checkDigit % 11); //if checkDigit is higher than ten set it to zero if(checkDigit >= 10) checkDigit = 0; //Compare checkDigit with the last number of NIF //If equal the NIF is Valid. if(checkDigit == nif.charAt(8)) return true; } } return false;}function IsNumeric(ObjVal){return /^\d+$/.test(ObjVal);}

So, is it possible to make a regular expression from this?

The rules are:

-must be only numbers
-must be 9 characters(numbers) long
-the first number must be 1 or 2 or 5 or 6 or 8 or 9
-the last number performs some validation(%module) that you should understand viewing the above code

-must be only numbers
-must be 9 characters(numbers) long
-the first number must be 1 or 2 or 5 or 6 or 8 or 9
characterReg = /^[125689][0-9]{8}$/

-the last number performs some validation(%module) that you should understand viewing the above code
This part would produce a more complicated regular expression than is worth it, so I'd stick to using code.

If possible let me know "how" complicated would the regex become. I don't mind if the regex is not "readable", the aproach of regex is just to cut some lines of code. Unless the regex could have some performance/other issues,. is that the case?

I have to agree with ozo: You're going to be attempting to reproduce modulo arithmetic via a regex. This isn't really what regex is designed for. The code approach would be much simpler. Just use ozo's suggested pattern, then add logic for the modulo check.

0

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Then how would I add up the 2 things (regex + code) in my form?

Should be like:

...//some codevar myRegex = /^[125689][0-9]{8}$/;if ( myRegex.test(inputValName) ){ // then implement other if here with the modulo% code??...//more code

but i a working with jquery here, I am more familiar with with. Don't know how to manipulate the DOM with pure js. Can I incorporate that function in my jquery?

function IsValidNIF(nif){ var checkDigit = 0; var i = 0; var characterReg = /^[125689][0-9]{8}$/; if (characterReg.test(nif) { //Perform CheckDigit calculations checkDigit = nif.charAt(0) * 9; for(i = 2; i <= 8; i++) { checkDigit += nif.charAt(i-1) * (10-i); } checkDigit = 11 - (checkDigit % 11); //if checkDigit is higher than ten set it to zero if(checkDigit >= 10) checkDigit = 0; //Compare checkDigit with the last number of NIF //If equal the NIF is Valid. if(checkDigit == nif.charAt(8)) return true; } return false;}

Nowadays, monitoring is a mixture of tools, systems, and codes—making it a very complex process. And with this complexity, comes variables for failure. Get DZone’s new Guide to Performance to learn how to proactively find these variables and solve them before a disruption occurs.

Nothing in an HTTP request can be trusted, including HTTP headers and form data. A form token is a tool that can be used to guard against request forgeries (CSRF). This article shows an improved approach to form tokens, making it more difficult to…

The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve t…

In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…