
Security News
Nx npm Packages Compromised in Supply Chain Attack Weaponizing AI CLI Tools
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
joi-persian-validators
Advanced tools
A set of persian validations built for Joi object validator.
A set of persion validations built on top of Joi object validator. This idea came to my mind when I had to rewrite the same validator over and over again. Feel free to open an issue to ask for more validation rules.
Install the package using yarn or npm
npm i joi joi-persian-validators
// or
yarn add joi joi-persian-validators
This library is a set of extenstions of top of Joi validator, thus you can use it with react-hook-forms or formik. Feel free to take a look at examples. Using this lib is fairly simple, first you need to import the lib;
import joi from 'joi';
import persianJoi from 'joi-persian-validators';
then you have to add persian extenstions to your joi instance.
// Add custom validators to a single joi instance
const pJoi = joi.extend(...persianJoi);
// Then create your custom schema
const schema = pJoi.object({
mobile: pJoi.mobile(),
id: pJoi.idNumber()
});
// commonjs
const Joi = require('joi').extend(...require('joi-persian-validators'));
// Then create your custom schema
const schema = Joi.object({
mobile: Joi.mobile(),
id: Joi.idNumber()
});
To see how it works with react-hook-forms
see this Example
import joi from 'joi';
import extensions from 'joi-persian-validators';
const phoneNumber = '09123334433';
// Also you can use persian characters, the value will be returned with english characters
const testId = '۴۳۱۱۰۲۰۴۶۵';
const pJoi = joi.extend(...extensions);
const schema = custom.object({
phone: pJoi.phone(),
id: pJoi.idNumber(),
});
const { value } = schema.validate({ phone: phoneNumber, id: testId });
// value = { phone: '09123334433', id: '4311020465' }
Validator | API | Extra rules | Description |
---|---|---|---|
Mobile | .mobile() | .irancell() , mci() , rightel(), .with({ operator: true }) | Validate a mobile phone number. Additional rules lets you to force the user to enter the desired operator phone number. |
NationalID | .idNumber() | Validate Iranian national id number. |
.with({ operator: true })
will return the phone number with the operator but .irancell()
, .mci()
, .rightel()
will force the user to enter a number with the given rule.
const schema = pJoi.object({
phone: pJoi.mobile().messages({
'mobile.base': 'شماره ای که وارد کردید اشتباه است',
'mobile.irancell': 'شماره ای که وارد کردید حتما باید ایرانسل باشد',
'mobile.characters': 'طول شماره وارد شده باید دقیقا ۱۱ باشد',
}),
id: pJoi.idNumber(),
});
/*
Valid Data
*/
const phoneNumber = '09332221122';
const id = '۴۳۱۱۰۲۰۴۶۵';
const { value } = schema.validate({ phone: phoneNumber, id });
// value =
// { phone: '09332221122', id: '4311020465' }
/*
Invalid Data
*/
const phoneNumber = '00332221122';
const id = '۴۳۱۱۰۲۰۴۶۵';
const { value, error } = schema.validate({ phone: phoneNumber, id });
// error =
/*
{ phone: '00332221122', id: '۴۳۱۱۰۲۰۴۶۵' } [Error [ValidationError]: شماره ای که وارد کردید اشتباه است] {
_original: { phone: '00332221122', id: '۴۳۱۱۰۲۰۴۶۵' },
details: [
{
message: 'شماره ای که وارد کردید اشتباه است',
path: [Array],
type: 'mobile.base',
context: [Object]
}
]
}
*/
Please feel free to create an issue to suggest new validators or new features.
FAQs
A set of persian validations built for Joi object validator.
We found that joi-persian-validators demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.
Security News
A clarification on our recent research investigating 60 malicious Ruby gems.