persian-rex
Version:
A collection of useful Persian / Farsi regular expressions
70 lines (62 loc) • 2.62 kB
JavaScript
(function () {
var persianRex = {};
var numberRange = '[\u06F0-\u06F9]',
charRange = ['[\u06A9\u06AF\u06C0\u06CC\u060C',
'\u062A\u062B\u062C\u062D\u062E\u062F',
'\u063A\u064A\u064B\u064C\u064D\u064E',
'\u064F\u067E\u0670\u0686\u0698\u200C',
'\u0621-\u0629\u0630-\u0639\u0641-\u0654]'].join(''),
rtlPunctuations = '(،|؟|«|»|؛|٬)',
ltrPunctuations = '(\\.|:|\\!|\\-|\\[|\\]|\\(|\\)|/)';
persianRex.number = new RegExp('^' + numberRange + '+$');
persianRex.letter = new RegExp('^' + charRange + '+$');
persianRex.punctuation = new RegExp('^' + combineRegExps(rtlPunctuations, ltrPunctuations) + '+$');
persianRex.text = new RegExp('^' +
combineRegExps(numberRange, charRange, rtlPunctuations, ltrPunctuations, '\\s') + '+$'
);
persianRex.rtl = new RegExp('^' + combineRegExps(charRange, numberRange, rtlPunctuations, '\\s') + '+$');
persianRex.hasNumber = new RegExp(numberRange);
persianRex.hasLetter = new RegExp(charRange);
persianRex.hasPunctuation = new RegExp(combineRegExps(rtlPunctuations, ltrPunctuations));
persianRex.hasText = new RegExp(
combineRegExps(numberRange, charRange, rtlPunctuations, ltrPunctuations)
);
persianRex.hasRtl = new RegExp(combineRegExps(numberRange, charRange, rtlPunctuations));
persianRex.numbersASCIRange = numberRange;
persianRex.lettersASCIRange = charRange;
persianRex.rtlPunctuationsASCIRange = rtlPunctuations;
persianRex.ltrPunctuationsASCIRange = ltrPunctuations;
function combineRegExps () {
var combined = '(';
for (var i = 0; i < arguments.length; i++) {
combined += '(';
if (i != arguments.length - 1)
combined += arguments[i] + ')|';
else
combined += arguments[i] + ')';
}
return combined + ')';
}
//AMD wrapper
if (typeof define !== 'undefined' ) {
define([], persianRex);
//NodeJS wrapper
} else if (typeof exports !== 'undefined') {
exports.number = persianRex.number;
exports.letter = persianRex.letter;
exports.punctuation = persianRex.punctuation;
exports.text = persianRex.text;
exports.hasNumber = persianRex.hasNumber;
exports.hasLetter = persianRex.hasLetter;
exports.hasPunctuation = persianRex.hasPunctuation;
exports.hasText = persianRex.hasText;
exports.lettersASCIRange = charRange;
exports.numbersASCIRange = numberRange;
exports.rtlPunctuationsASCIRange = rtlPunctuations;
exports.ltrPunctuationsASCIRange = ltrPunctuations;
exports.rtl = persianRex.rtl;
exports.hasRtl = persianRex.hasRtl;
} else {
window.persianRex = persianRex;
}
})();